Both midpointBetweenPoints和zoomRectForScale:withCenter:是示例代碼的一部分,而不是iOS本身的一部分。
midpointBetweenPoints返回一個CGPoint(與關於賦值的錯誤有關),但不在任何地方的頭中聲明。在使用它的示例中,您會看到3_Tiling,它在TapDetectingView.m的第176行定義,在第54行聲明,並在118和139處使用。我的猜測是,您要麼不包含代碼在你的項目中,或者包括定義但省略聲明。 Objective-C是C的超集,所以遵循C規則。在C中,假定無法找到聲明的任何函數都返回'int'。很可能您需要添加聲明:
CGPoint midpointBetweenPoints(CGPoint a, CGPoint b);
某處在您使用之前。
猜測,您使用zoomRectForScale:withCenter:可能是一個類似的問題。如果沒有爲Objective-C方法找到聲明,則假定它們返回'id',這是一個指向通用Objective-C對象的指針。 CGRect是一個C結構體,因此將一個指針指向它是沒有意義的。假設您已經包含RootViewController.m的第401至第416行代碼,還需要確保該聲明對調用代碼可見。在示例代碼,這是上線80實現了與以下聲明:
@interface RootViewController (UtilityMethods)
- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center;
@end
聲明添加那樣的源文件內是近似在Objective-C私有方法的一種方式。如果你想讓它公開,你可以將它添加到適當的接口聲明中。