負の値を含む計算があります。
row = (stagePosition - col) / PHNumRow;
stagePositionが-7で、colが1であるとします。これらは両方とも行を含めてNSIntegerです。PHNumRowは8です。
PHNumRowがNSIntegerの場合、期待する結果が得られます:-1。ただし、PHNumRowがNSUIntegerの場合、結果はガベージになります。
除数が署名されていないか署名されているかが重要なのはなぜですか?結果をunsignedintに入れていません。