4th*_*ace 36 iphone cocoa-touch memory-management objective-c static-libraries
在AppDelegate中,我正在分配静态库中定义的实例.此实例的NSString属性设置为"copy".当我访问此实例上的字符串属性时,应用程序崩溃,"无法识别的选择器发送到实例".Xcode为属性提供代码提示,这意味着它在调用应用程序中是已知的.特定类被编译到静态库目标中.我错过了什么?
添加一些代码.
//static library
//ClassA.h
@interface ClassA : NSObject {
...
NSString *downloadUrl;
}
@property(nonatomic, copy) NSString *downloadUrl;
//ClassA.m
@synthesize downloadUrl;
Run Code Online (Sandbox Code Playgroud)
在调用应用程序的appDelegate中.
//app delegate header file
@interface myApp : NSObject <UIApplicationDelegate> {
ClassA *classA;
}
@property (nonatomic, retain) ClassA *classA;
//app delegate .m file
@synthesize classA;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
classA = [[ClassA alloc] init];
//exception occurs here. downloadUrl is of type NSCFNumber
classA.downloadUrl = @"http://www.abc.com/";
...}
Run Code Online (Sandbox Code Playgroud)
应用程序中的其他类将获得对委托的引用并调用classA.downloadUrl.
ste*_*anB 26
1)@implementation块内合成?
2)你应该参考self.classA = [[ClassA alloc] init];并self.classA.downloadUrl = @"..."代替普通classA吗?
3)在你的myApp.m文件中你需要导入ClassA.h,当它丢失时它将默认为数字或指针?(如果编译器找不到,C变量默认为int):
#import "ClassA.h".
Dav*_*ter 15
很多人已经为这个和类似的问题提供了一些非常技术性的答案,但我认为它比这更简单.有时,如果您没有注意,您不打算使用的选择器可以附加到界面中的某些内容.您可能会收到此错误,因为选择器在那里但您没有为其编写任何代码.
仔细检查不是这种情况的最简单方法是按住Ctrl键单击该项,以便可以看到与其关联的所有选择器.如果那里有你不想要的任何东西,那就摆脱它吧!希望这可以帮助...
| 归档时间: |
|
| 查看次数: |
183871 次 |
| 最近记录: |