Iphone 是否将应用程序委托定义为常量?

Iphone 是否将应用程序委托定义为常量?,iphone,objective-c,ios,delegates,Iphone,Objective C,Ios,Delegates,我正在尝试编写一个iPhone应用程序,但遇到了一个问题。 我在类中声明了一个常量作为应用程序委托 #define ikub (iKubMobileAppDelegate *)[[UIApplication sharedApplication] delegate] 当我需要获取数组的大小时,它是应用程序的一个实例变量 [ikub.subscriptions count] 访问未知的“订阅”getter方法时出现错误 我真的不知道为什么会这样 请帮忙 您需要将宏值括在括号中(否则,宏中的强制转

我正在尝试编写一个iPhone应用程序,但遇到了一个问题。
我在类中声明了一个常量作为应用程序委托

#define ikub (iKubMobileAppDelegate *)[[UIApplication sharedApplication] delegate]
当我需要获取数组的大小时,它是应用程序的一个实例变量

[ikub.subscriptions count]
访问未知的“订阅”getter方法时出现错误
我真的不知道为什么会这样


请帮忙

您需要将宏值括在括号中(否则,宏中的强制转换将应用于属性,此时属性未知。)因此:


确保已将
iKubMobileAppDelegate.h
文件导入到使用应用程序代理的文件中。并检查您的应用程序代理是否具有
subscriptions
属性。此外,C预处理器宏通常以
ALL_CAPS
命名,这是一种惯例。另外,将常量更改为“所有大写”,以确保1000%的确定,但我得到了相同的错误:(我建议使用内联函数而不是宏。这样可以正确设置断点,并避免上述特定于宏的欺骗行为。类似于静态内联iKubMobileAppDelegate*ikub(){return[[UIApplication sharedApplication]delegate];}小心。
()
在纯C/Objective-C中的意思不同于
(void)
。在这种情况下,他希望得到
静态内联iKubMobileAppDelegate*ikub(void)
:)很好的答案,但你能详细说明宏中的强制类型吗?@JimThio我不明白你的问题。你说宏中的强制类型适用于属性。什么财产?什么演员?哪一个?谢谢,这会帮助我理解。
#define ikub ((iKubMobileAppDelegate *)[[UIApplication sharedApplication] delegate])