【问题标题】:Synthesis of weak property only allowed in arc or gc mode [closed]仅允许在 arc 或 gc 模式下合成弱属性 [关闭]
【发布时间】:2013-02-15 12:34:48
【问题描述】:

嘿,我今天才开始 ios 编程,我正面临这个错误。

请帮我消除这个错误

请给我推荐一些不错的 ios 开发者教程

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *txtUsername;
@property (weak, nonatomic) IBOutlet UITextField *txtPassword;
- (IBAction)loginClicked:(id)sender;
- (IBAction)backgroundClick:(id)sender;


@end

【问题讨论】:

  • 你遇到了什么错误?

标签: ios objective-c


【解决方案1】:

您可以阅读此网页http://designthencode.com/scratch/ 开始学习 iOS 编程。

它很好地介绍了为 iPhone 编写应用程序所涉及的许多元素。

有关属性声明的问题,请参阅下面的这个 stackoverflow 答案。

Properties and Instance Variables in Objective-C

【讨论】:

    【解决方案2】:

    如果您不使用 ARC,则不能使用 weak。对于非 ARC 代码中的 IBOutlet 引用,请将您对 weak 的引用替换为 retain。 (这有点令人困惑,但通常您在非 ARC 代码中使用 assign 而不是 weak,但对于 IBOutlet 引用,您使用 retain。)

    更好的是,正如 nneonneo 建议的那样,您应该使用 ARC。

    【讨论】:

    • 我不确定是否在非弧代码上为 IBOutlet 使用保留。如果您将 IBOutlet 用于在 XIB 上创建的对象,则您没有它们的所有权,因此您应该使用 assign。
    • @diogot 我对你的立场并不同情,但 Apple 历来建议 retain 用于前 ARC 代码中的网点。可能是为了避免在 iOS 5.x 及更早版本中发布视图时出现悬空指针。 viewDidUnload 文档似乎强化了这样一个信息,即这是应该发布自己的网点的地方。
    • 我很确定assign,但我四处搜索,即使没有找到官方文档,我也发现了一些证据表明应该使用retain
    【解决方案3】:

    如果你刚刚开始,你应该只是enable ARC。它会为您省去很多麻烦,并且会解决这个问题。

    【讨论】:

    • 其他人会争辩说,刚开始的人应该禁用 ARC,这样他们才能更好地学习和理解内存管理。使用 ARC 要容易得多,但您不知道发生了什么。对于使用 IB 与在代码中执行 UI 可以得出相同的论点。 IB 让一些事情变得更容易,但当它不起作用时,你不知道该怎么办。
    • @rmaddy:我同意你的观点,IT 领域的人和新人(新手)选择更简单的解决方案而不是复杂的解决方案。这是一个广泛的讨论话题。没有人能在这个话题中获胜。
    • @rmaddy:我可能会同意,除了 ARC 在很多情况下是一个巨大的胜利,因为初学者很容易搞砸retains 和releases。 ARC 并没有让你免于处理内存管理,但它处理了足够多的令人讨厌的(自动)东西,程序员可以专注于手头的问题。
    • @nneonneo 我同意:正如Advanced Memory Management 指南所说:“在 [ARC] 中,系统使用与 MRR 相同的引用计数系统,但它会在”我想你和 rmaddy 都同意。
    猜你喜欢
    • 1970-01-01
    • 2014-02-14
    • 2013-09-26
    • 2012-08-19
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    相关资源
    最近更新 更多