gpt4 book ai didi

iphone - 在 .m 文件中声明 Objective C 接口(interface)的实例变量(在 Release模式下)

转载 作者:行者123 更新时间:2023-12-03 16:51:17 28 4
gpt4 key购买 nike

我可以构建以下代码进行调试,但不能在 xcode 中为 OS X 目标发布:

myclass.h:

@interface myclass : NSObject

@property (nonatomic,copy) NSString *name;

@end

myclass.m:

@implementation myclass {
NSString *_name;
}

@synthesize name = _name;

@end

有什么想法吗?在 iOS 上,它是为发布和调试而构建的。

我知道将实例变量声明移动到 .h 是可行的,但我的目的是隐藏实现细节(当然真实的类比这个示例更复杂)。在构建 64 位应用程序时,我在 Mountain Lion 上的最新 xcode 版本(4.6,构建 4H127)上尝试过此操作。

最佳答案

一种方法是使用类扩展。在您的 .m 文件中,写入

@interface myclass ()
{
NSString *_name;
}
@end

位于 myclass@implementation 之上。

另一方面,您实际上不需要声明支持您的属性的实例变量。如果你只是写

@property (nonatomic, copy) NSString *name;

在类声明中(以 @interface myclass : NSObject 开头并以 @end 结尾的代码),支持 NSString * ivar _name 将会自动为您生成,您将能够在 myclass 的实例方法中访问此 ivar。您甚至不需要编写@synthesize name = _name;。此外,如果您想使用 _name 之外的变量名称来支持您的属性 name,则无需声明 ivar;相反,你可以只使用 @synthesize

@synthesize name = m_Name;

在类的 @implementation block 内。

关于iphone - 在 .m 文件中声明 Objective C 接口(interface)的实例变量(在 Release模式下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15432496/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com