long long value = objc_msgSend(obj, @selector(longLongValue)); とやっても value には 32bit 分の値しか代入されない場合の対処法。 64bit CPU で対応バイナリを使っている場合はよく分からないけど、32bit CPUではレジスタを2つ使って返り値を格納する。上記の例ではそのうち1個しか見ないので、Intel では下位 32bit、PPC では上位 32bitしか取れないのであった。 long long value = (long long)objc_msgSend(obj, @selector(longLongValue)); とキャストしても、まず返り値を long で取って、それを long long に変換するので意味がない。どうすればいいのかというと、このページのように関数を typedef してキャス