小编LJ *_*son的帖子

EXC_BAD_ACCESS与NSOPERATION和ARC

我有一个应用程序在较旧的项目中工作正常(不使用ARC,并在Xcode 4.0中使用iOS 4.2编写.

我试图将此应用程序移植到使用ARC和故事板与Xcode 4.2和iOS 5.

我已经移植了所有内容并修复了由保留,释放,解除分配等引起的所有错误.该项目现在构建良好.我还在新项目中重建了我的Core Data模型并重建了我的模型子类.

发生错误的地方是我尝试在后台线程中解析XML文件.该文件是项目的本地文件.我为执行解析的每个NSOperation类NSLog初始化器(其中有四个).我到了应用程序的那一点,当我将操作添加到队列时发生错误.

这是我在AppDelegate中启动操作的代码:

#import "AppDelegate.h"
#import "ACHPhonebook.h"

@implementation AppDelegate

@synthesize window = _window;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize managedObjectModel = __managedObjectModel;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;

@synthesize parseQueue;
@synthesize parseOpAD, parseOpEK, parseOpLR, parseOpSZ;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ACHPhonebook" inManagedObjectContext:self.managedObjectContext];

    [request setEntity:entity];    

    NSError *error = nil;
    NSUInteger count = [self.managedObjectContext countForFetchRequest:request error:&error];

    NSLog(@"total CD count = %d", count);

    if(
       getenv("NSZombieEnabled") || getenv("NSAutoreleaseFreedObjectCheckEnabled")
       ) …
Run Code Online (Sandbox Code Playgroud)

objective-c ios5 automatic-ref-counting

4
推荐指数
1
解决办法
3080
查看次数

在解除Modal Segue后更新UIViewController

我目前正在为我的第一款iPhone游戏设计结构并遇到问题.目前,我有一个'MenuViewController',它允许你选择要播放的关卡和一个'LevelViewController'来播放关卡.

UIButton'MenuViewController'上的A 触发了'LevelViewController'的模态segue.

UIButton'LevelViewController'上的A 触发以下方法返回'MenuViewController':

-(IBAction)back:(id)sender //complete
{
    [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

问题是,我UILabel在菜单页面上打印了一个玩家拥有的总点数.每当我从关卡中返回菜单时,我希望此标签自动更新.目前,标签是在"MenuViewController"中以编程方式定义的:

-(void)viewDidLoad {
    [super viewDidLoad];
    CGRect pointsFrame = CGRectMake(100,45,120,20);
    UILabel *pointsLabel = [[UILabel alloc] initWithFrame:pointsFrame];
    [pointsLabel setText:[NSString stringWithFormat:@"Points: %i", self.playerPoints]];
    [self.pointsLabel setTag:-100]; //pointsLabel tag is -100 for id purposes
}
Run Code Online (Sandbox Code Playgroud)

self.playerPoints是MenuViewController的整数属性

有没有办法可以更新标签?提前谢谢!

xcode uiviewcontroller uilabel modalviewcontroller ios

4
推荐指数
2
解决办法
5227
查看次数

在一天之后和之前一天的选择目标-c之前添加当前日期

我有一个日期选择器,我想只有一行有3个选项:当天,前一天和前一天.

你能帮帮我吗?

我的问题是,如何在一天后和前一天添加"当天"?

objective-c datepicker nsdate ios

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

键盘更改时是否有任何通知(例如从NumberPad到默认值)

我试图找出当键盘发生变化时如何得到通知.我想要做的是为类型4和5的键盘(NumberPad和PhonePad)添加一个DONE按钮,一切正常,除非我使用默认KB类型从TextField转换,KeyboardDidAppear不是通知被解雇了

这是我得到的:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(keyboardDidShow:) 
                                                 name:UIKeyboardDidShowNotification 
                                               object:nil]; 

}
Run Code Online (Sandbox Code Playgroud)

然后我为当前的KB类型和正在编辑的当前TextField添加了一个Property:

#pragma mark - Delegate Methods
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    self.currentKBType = textField.keyboardType;
    self.curTextField = textField;
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

然后,我根据当前的KB类型决定是否添加DONE按钮:

- (void)keyboardDidShow:(NSNotification *)note {
    if (self.currentKBType == 4 || self.currentKBType == 5) {
        [self addButtonToKeyboard];
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是在显示键盘时会触发通知,但在更改时不会触发(从一个TextField转换到指定不同KB类型的另一个TextField).

有什么建议?我错过了什么吗?

cocoa-touch objective-c uikeyboard ios uikeyboardtype

2
推荐指数
1
解决办法
1666
查看次数

将NSDate转换为NSInteger,然后转换为NSString

我试图复制当前在VB中实现的功能.我需要做的是将日期转换为长整数,然后将其转换为字符串.我还需要将一个长整数转换为该整数的HEX值,然后将其转换为字符串.

这是我在VB中使用的代码.

If dteCreated <> #12:00:00 AM# Then
strHash = CStr(CLng(dteCreated))

If InStr(1, strHash, ".", vbTextCompare) > 0 Then
    strHash = Left(strHash, InStr(1, strHash, ".", 1) - 1) & "_" & Mid(strHash, InStr(1, strHash, ".", 1) + 1)
Else
    strHash = strHash & "_00000"
End If

strHash = strHash & "_" & CStr(Hex(intereq))
Run Code Online (Sandbox Code Playgroud)

这两个变量是dteCreated(Date)和intereq(Long).这构建的是在我们的服务器上解码的散列查询字符串.

任何人都可以帮助我在Objective-C中使用的方法来获得相同的功能吗?

vb6 objective-c ios

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

其他人在将XCode更新到4.3.1时遇到问题?

我有两台MacBook Airs(一台是最新版本).在他们两个上我都尝试通过Mac App Store安装新版本的XCode.它们都下载并指示它已安装,但XCode仍然报告4.2.1并且我无法将应用程序部署到我的手机,因为它运行5.1并且XCode缺少SDK.

其他人有类似问题吗?

macos xcode ios osx-lion

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