我需要帮助从一个类到另一个类读取变量.我已经对此有了一些答案,但没有成功.
PP.h:
@interface PP : UIViewController
{
@public int fNum;
}
@property (readwrite, nonatomic) int fNum;
- (IBAction)setSomeNum;
@end
Run Code Online (Sandbox Code Playgroud)
PP.m:
@synthesize fNum;
- (IBAction)setSomeNum
{
fNum = 69;
NSLog(@"Set Num Activated %d",fNum); //OK
}
Run Code Online (Sandbox Code Playgroud)
TryView.m:
#import "TryView.h"
#import "PP.h"
@interface TryView ()
@end
@implementation TryView
- (void)viewDidLoad
{
[super viewDidLoad];
PP *obj ;
int x = obj.fNum;
NSLog(@"Happines %d",x); //Prints 0
}
@end
Run Code Online (Sandbox Code Playgroud)
有什么不对,为什么打印0?
小智 8
你正在做的事情本质上是未定义的行为,所以很高兴它没有崩溃.
PP *obj ;
int x = obj.fNum;
Run Code Online (Sandbox Code Playgroud)
从根本上说是错误的 - 你不是在创建/初始化对象,所以obj是一个悬空指针,它可以指向任何一个(即垃圾)并在访问时崩溃.即使您创建了该对象,您也应该setSomeNum在其上调用该方法 - 它不会被自动调用(为什么要这样?).总而言之,你必须写下这个:
PP *obj = [[PP alloc] init];
[obj setSomeNum];
int x = obj.fNum;
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |