当前位置:  开发笔记 > 编程语言 > 正文

Objective-c Iphone如何设置属性的默认值

如何解决《Objective-cIphone如何设置属性的默认值》经验,为你挑选了2个好方法。

您好我在ViewController.h中有以下代码:

#import 

@interface CalcViewController : UIViewController {
    NSNumber* result;
    NSString* input;
    //NSString* input = @"";

    IBOutlet UITextField* display;
}

@property (retain) NSNumber* result;
@property (retain) NSString* input;
@property (nonatomic, retain) UITextField* display;

@end

问题是我想在输入中附加一个字符串,但是当它仍为空时这是不可能的.这就是为什么我想将输入的默认值设置为@"".但是我在哪里放这个代码.

我知道一个可能的解决方案,你把它放在一个默认的构造函数中.但我不知道在哪个文件中放这个.我应该在哪里打电话.

遗憾的是,我对C的理解有限,并且意识到也许.h文件不是正确的地方.

如果您需要,项目类型是基于视图的应用程序.

希望你能帮忙.



1> Lyndsey Ferg..:

您可能会发现阅读Objective-C或Cocoa上的一些文档很有用.如果您在StackOverflow或Google上执行搜索,您可能会在阅读材料上找到一些很好的建议.

要回答你的问题,你应该有一个@implementation of CalcViewController.人们通常会将此@implementation放在*.m文件中.如果您的*.h文件名为"ViewController.h",那么实现将进入"ViewController.m".

然后,您将创建UIViewController的初始化函数的副本并将其放在那里(我不知道默认的init函数是什么).

例如:

@implementation CalcViewController

@synthesize result;
@synthesize input;

- (id)initWithNibName:(NSString*)aNibName bundle:(NSBundle*)aBundle
{
    self = [super initWithNibName:aNibName bundle:aBundle]; // The UIViewController's version of init
    if (self) {
        input = [[NSString alloc] initWithString:@""]; // You should create a new string as you'll want to release this in your dealloc
    }
    return self;
}

- (void)dealloc
{
    [input release];
    [super dealloc];
}
@end // end of the @implementation of CalcViewController

笔记:

您可能希望将文件重命名为CalcViewController.我相信Xcode的重构引擎更容易处理.

当您将它与Interface Builder连接时,您不需要为显示实例变量声明@property.除非您希望CalcViewController的客户端经常更改它

编辑: 2009年4月28日:美国东部时间上午10:20:我建议实际分配一个NSString,因为你应该在dealloc技术上释放它.

编辑: 2009年4月28日:美国东部时间上午11:11:我更新了@implementation以使用UIViewController的init版本.


+1这是一个很好的建议,但"阅读文档"是最重要的部分.俗话说:*给一个人一条鱼,你喂他一天.教一个人如何钓鱼,你养活了他一辈子.*这个问题直接涉及Objective-C(和大多数OO语言)的基础 - 如果OP不知道初始化者的作用,他/她肯定需要审查基础知识.@dimadima当你想知道你正在做的事情时,你的第一站应该是你正在使用的任何语言或框架的文档.
这不是冒犯的意图,而是指出应该审查一些基本概念.否则会出现其他问题以使代码的作者感到困惑.您如何更改我的回复,以便我仍然可以建议您查看文档而不是一个鸡巴?谢谢.我确实回答了这个问题.

2> jack..:

非常好的问题.简短的回答是在init函数中初始化值.您需要覆盖默认的init函数,以便在使用对象之前准备好默认值.我想建议人们不要建议其他人阅读文件; 如果可以,请直接回答问题.


那些说"等等等等,也许你应该阅读文档"的人应该打屁股,排斥和讨厌.他们很蠢.
亚历克斯·格雷
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有