相关疑难解决方法(0)

IBOutlet是否需要成为属性并合成?

在大多数示例中,我看到以下IBOutlets设置:



(Example A)

FooController.h:

@interface FooController : UIViewController {
    UILabel *fooLabel;
}

@property (nonatomic, retain) IBOutlet UILabel *fooLabel;

@end

FooController.m:

@implementation FooController

@synthesize fooLabel;

@end

Run Code Online (Sandbox Code Playgroud)

但这也很好(注意:没有属性也没有合成):



(Example B)

FooController.h:

@interface FooController : UIViewController {
    IBOutlet UILabel *fooLabel;
}

@end

FooController.m:

@implementation FooController

@end

Run Code Online (Sandbox Code Playgroud)

如例B中那样定义IBOutlets是否有任何缺点?像内存泄漏?似乎工作正常,我更喜欢不将IBOutlets公开为公共属性,因为它们不是这样使用的,它们仅用于控制器实现.在没有真正需要的情况下将它定义在三个地方并不会让我觉得非常干(不要重复自己).

iphone interface-builder

53
推荐指数
2
解决办法
3万
查看次数

如果我不保留IBOutlet会怎样?

如果我这样做:

@interface RegisterController : UIViewController <UITextFieldDelegate>
{
    IBOutlet UITextField *usernameField;
}
Run Code Online (Sandbox Code Playgroud)

而不是这个:

@interface RegisterController : UIViewController <UITextFieldDelegate>
{
    UITextField *usernameField;
}
@property (nonatomic, retain) IBOutlet UITextField *usernameField;
Run Code Online (Sandbox Code Playgroud)

会发生什么坏事吗?我知道在第二种情况下,该字段被保留,但是由于笔尖拥有该字段,这是否会有所不同?没有保留,这个领域会消失吗?在什么情况下?第一种情况下的代码工作,想知道这是否是内存管理方面的问题.

iphone retain

39
推荐指数
3
解决办法
1万
查看次数

@interface声明和@property声明之间的区别

我是C的新手,对于目标C来说是新手.对于一个iPhone子类,Im声明变量我想让类中的所有方法都可以看到@interface类定义,例如

@interface myclass : UIImageView {
    int aVar;
}
Run Code Online (Sandbox Code Playgroud)

然后我再次宣布它为

@property int aVar;
Run Code Online (Sandbox Code Playgroud)

然后我

@synthesize aVar;
Run Code Online (Sandbox Code Playgroud)

你能帮我理解三个步骤的目的吗?我做了不必要的事吗?

谢谢.

iphone properties objective-c

29
推荐指数
2
解决办法
2万
查看次数

仅在弧或gc模式下允许合成弱性质

嘿,我今天刚开始ios编程,我正面临着这个错误.

PLZ帮我删除此错误

PLZ建议我一些不错的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
Run Code Online (Sandbox Code Playgroud)

objective-c ios

13
推荐指数
2
解决办法
3万
查看次数

UITableView reloadData什么都不做(UITableView不是nil)

我正在构建我的第一个真正的应用程序,你们已经是最有帮助的,但我一直在努力与tableView不更新.我希望这里的某个人可以对此有所了解,并且可能想出任何关于我可能错过或做过不必要的其他事情的想法.

目前,该应用程序应该执行以下操作:

  1. 使用来自sqlite db的数据填充表(基本上只列出所有表)
  2. 用户按下按钮(触发fetchData方法)
  3. (void)fetchData将本地数据库与服务器数据库校验和进行比较
  4. (void)fetchData设置NSURLConnection,通过POST与服务器通信
  5. 当连接收到所有数据时,它会更新本地数据库
  6. tableView dataSource(它是一个NSMutableArray)使用新的db数据进行更新
  7. tableview得到更新,并列出数据库中的所有表[myTableView reloadData]被调用

我经过双重检查的事情:tableview和delegate,datasource和outlet之间的连接; tableView不是nil; 数据源本身已经准确更新;

一切都达到了最后一点(7).似乎myTableView 当时并不是零.想法?如果您需要查看更多我的代码,请告诉我.

我还看了一下beginUpdates和endUpdates方法,但在我看来,他们一度关注一些变化和用户交互性.我想根据用户选择重新加载整个表(即希望根据当前用户登录反映整个其他SQL选择字符串).或者还有另一种更好的方法吗?

提前致谢!

这是一段相当不错的代码:

#import "FirstViewController.h"
@interface FirstViewController ()
@end

@implementation FirstViewController
#import "FirstViewController.h"

@synthesize myTextView, myTableViewDataSource, myFetchedData, resultat, tablesAndChecks, tablesArr, checksArr, tablesToRequest,receivedData, receivedDataString, SQL, sqlStatementsArr, failedSqlStatementsArr, failedSqlStatementsCodeArr, dbloop1;



#pragma mark Table view methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSLog(@"Konfigurerar tableView"); //swedish for "Configuring tableView" …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uitableview uikit ios

7
推荐指数
1
解决办法
1892
查看次数