小编Ric*_*Ric的帖子

有没有办法在调试会话期间按类和方法名称跟踪/跟踪和记录所有方法?

我对登录框架或在封面下没有兴趣,但只有在每个方法进入和退出时我的源代码级别.我希望它提供类名和方法名称并将其记录到文件或至少让它在屏幕上飞过.

我的查询是,如果可以使用现有的Xcode/Debugger/Instruments工具,我是否可以在每个方法入口和出口处以除了NSLog语句之外的简单方式实现它,或者是否有提供此功能的商业工具?

我在这里谈论源方法......不是执行进程或线程.谢谢.

debugging xcode trace objective-c

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

为什么从NSData对象创建的NSString无法显示它有内容?

为什么以下代码在底部生成日志记录?这是异常 - 我的第二个NSLog应该打印chrStr但不产生任何空白,这由此debug命令验证:

(gdb)po chrStr

object返回空描述

但是,我将NSString重新转换回NSData对象的第三个NSString显示数据,与第一个NSLog中的值相同,应该如此.这将向我表明chrStr必须具有实际内容.但是从NSLOG或po命令看来似乎并非如此.为什么?


NSString *login;   
NSString *pass;


// Purpose: NSString *loginString = [NSString stringWithFormat:@"\000%@\000%@", login, pass];    
login = @"Loginname";       // text string1
pass = @"Password";         // text string2

// convert text strings to data objects
NSData *subData1 = [login dataUsingEncoding:NSUTF8StringEncoding];  
NSData *subData2 = [pass dataUsingEncoding:NSUTF8StringEncoding];   

// embed a NULL into new NSData object
NSMutableData *data = [NSMutableData data];
unsigned char zeroByte = 0;
[data appendBytes:&zeroByte length:1];

// append string1, NULL, string2 to data object
[data appendData:subData1]; …
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring nsdata ios

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

Objective-C代码中^字符的含义是什么?

对我来说,这是相当多的代码.我理解每个代码部分的部分,但是我无法描述它如何挂起并作为一个整体起作用的逻辑流程,从completionHandler:方法之后的'^'字符的解释开始.

我是否可以在这里寻求一些帮助,以较低效的形式重新编写此代码,但效率较低但在视觉上更容易理解?我下载了这段代码,我可以说在程序的上下文中,它是工作代码.

谢谢.

[[self stillImageOutput] captureStillImageAsynchronouslyFromConnection:videoConnection 
completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { 

CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, 
                                   kCGImagePropertyExifDictionary, NULL);

if (exifAttachments) {
   NSLog(@"attachements: %@", exifAttachments);
} 
else { 
   NSLog(@"no attachments");
}

NSData *imageData = [AVCaptureStillImageOutput 
                     jpegStillImageNSDataRepresentation:imageSampleBuffer];    

UIImage *image = [[UIImage alloc] initWithData:imageData];
[self setStillImage:image];

[image release];
[[NSNotificationCenter defaultCenter] 
  postNotificationName:kImageCapturedSuccessfully object:nil];

}];
Run Code Online (Sandbox Code Playgroud)

objective-c objective-c-blocks

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

如何在Lion下的Xcode 4.1工具中启用NSZombie?

这仅适用于专门在Lion上运行的新Xcode 4.1.你如何在仪器中启用NSZombie?它不再位于启动配置下的(i)图标中的分配中,如Xcode 4.0中所示.也没有名为Zombies的图书馆条目.

当然问题是我不能回到Xcode 4.0,因为它拒绝在Lion下运行,所以我在泡菜!使用Lion的任何其他前沿开发人员,比我更有经验,可以帮助挖掘出来吗?谢谢.-Ric

xcode nszombie ios nszombieenabled

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

使用Grand Central Dispatch时如何发布NSNotification?

我发现,正如我在编写图像到文件时预测的那样,我的UI被封锁了一段时间,这是不可接受的.当我将图像写入文件时,然后发布NS通知,以便我可以执行与该完成相关的一些其他特定作业.原始工作但UI阻止代码:

-(void)saveImageToFile {
    NSString *imagePath = [self photoFilePath];
    BOOL jpgData = [UIImageJPEGRepresentation([[self captureManager] stillImage], 0.5) writeToFile:imagePath atomically:YES];

if (jpgData) {        
    [[NSNotificationCenter defaultCenter] postNotificationName:kImageSavedSuccessfully object:self];
}
Run Code Online (Sandbox Code Playgroud)

为了避免UI阻塞,我将writeToFile:放入Grand Central Dispatch队列,以便它作为并发线程运行.但是当写完成并且线程完成后,我想发布一个NSNotification.我不能在这里显示代码,因为它在后台线程中.但这是我想要完成的功能,意识到这不是可行的代码:

-(void)saveImageToFile {
    NSString *imagePath = [self photoFilePath];

    // execute save to disk as a background thread
    dispatch_queue_t myQueue = dispatch_queue_create("com.wilddogapps.myqueue", 0);
    dispatch_async(myQueue, ^{
        BOOL jpgData = [UIImageJPEGRepresentation([[self captureManager] stillImage], 0.5) writeToFile:imagePath atomically:YES];
        dispatch_async(dispatch_get_main_queue(), ^{
            if (jpgData) {        
            [[NSNotificationCenter defaultCenter] postNotificationName:kImageSavedSuccessfully object:self];
            }
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

发布此通知以获取我想要的功能的正确机制是什么?

objective-c nsnotifications grand-central-dispatch ios4

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

如何让Openshift使用Express 4,而不是安装Express 3?

我使用Express 4在本地开发了我的Nodejs Express应用程序,它在我的计算机上按预期工作.然后我将整个应用程序git推送到Openshift.当我尝试运行它时,Openshift返回"503 Service Unavailable".如果我ssh到我的基本节点盒并执行"表达-V"它返回版本3.2.5.如果我在app-root/repo进入我的app文件夹并运行"express -V",我会得到相同的版本3.2.5.

很明显,我的应用程序的node_modules中包含在git上传中的Express 4没有被使用.根据我的应用程序的要求,使用Express 4的解决方案是什么?

想法是删除Openshift的Express 3版本,强制Openshift在我的应用程序区域使用我的Express 4,将Openshift的Express 3升级到Express 4.我无法弄清楚如何做任何这些并且我已经研究过这个.

node.js express openshift

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

如何在Objective-C中的视图控制器之间共享公共方法?

在我的应用程序中有许多视图控制器,它们有自己的用途.但是,在它们下面确实需要共同的维护工作,这些工作可以使用相同的方法代码,而不是每个都有自己的代码副本,字面上粘贴.

有没有办法分享这些常用方法的代码?我看到两种可能性:

1)在方法的特殊维护对象中,在内存中真正共享的一个代码副本

要么

2)在代码块中写入一次,但每个视图根据需要分配多次.

以下哪一条是正确的路径或正确的路径,以及如何以最简单的方式实施?

善良,在房间里的新编码器.

谢谢.

-Ric

iphone methods

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

如何将NULL char(\ 000)编码为NSData?

如何将NULL char(\ 000)编码为NSData?我无法理解如何做到这一点.我最终希望这是我构建的更大数据字符串的一部分,但我无法弄清楚如何将其引入.

null objective-c nsdata ios

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

在设备上找不到过度释放的对象调试

我有一个相当大的应用程序,它在模拟器中工作,但在iPhone设备上创建了一个过度发布的对象场景.NSzombies似乎是要走的路,除了在模拟器上没有过度释放对象并且NSZombies在设备上不起作用.通过几小时的记录,我似乎能够在我运行之间将其固定到某个位置 -

[locManager startUpdatingLocation]和 - 的开始 -

(void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation

这解释了为什么它在模拟器上工作,我检测不到位置能力,不运行该位置代码.

当我在[locManager startUpdatingLocation]之前和之后进行NSLog内联时,我的NSString对象被分配并存在.但是当应用程序执行并且它命中了locationManager时:NSLog显示NSString被释放,消失了.这个字符串对象与位置处理或功能完全无关.不相关的NSString.我已经注释掉了所有其他潜在的活动,并注释掉了所有显式发布代码,并且无法找到它发生的那一刻.

我更沮丧的是lldb似乎不支持观察点并且gdb支持它们但是这个版本看起来它们不起作用!gdb将设置硬件观察点,然后Xcode表示它正在运行,但30分钟后仍然没有视觉活动或中断.

我在Lion,Xcode 4.1.1和太多咖啡.

我应该采用什么方法在如此狭窄的活动和有限的工具中找到这个发布的NSString对象?

iphone gdb watchpoint ios xcode4.1

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

Apple说我可以在我的应用程序中使用iMessage,我问的是文档解释它的方式和位置?

Apple说我可以在我的应用程序中使用iMessage,我问的是文档解释它的方式和位置?

请注意我今天在Apple网站上的引用:

"在iOS 5 SDK中,消息表现在支持iMessage服务,因此您可以在应用程序中启动单个或组文本对话."

一定要喜欢!现在,API的文档在哪里做到了?这不是"是否有API可用"的问题,这是他们今天在其网站上直接声明的后续内容 -

我在哪里可以找到从[my] app中编写单个或组文本对话的文档?消息UI框架看起来像具有相同的绑定策略,您不会真正发送SMS消息但准备它,以供用户手动发送.这种限制基本上来自这样一个事实,即短信是两端的收费犯罪,用户应该知道他正在发送短信,并且他只有聪明才知道它是否来自Apple自己的用户界面.

但是iMessage改变了场景.这是免费的.如果框架可以向我返回一个值,我可以将iMessage发送给收件人,就像它在自己的Text Message应用程序中所知,然后发送iMessage并不是一个包含成本的攻击.收费短信的限制不再适用.那么API在哪里找出收件人是否是符合条件的iMessage收件人,然后编写iMessage代码,完全创建,格式化并从我的应用程序中发送?

谢谢.

-Ric

frameworks ios ios5

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

为什么我的initWithData返回nil表示在将NSData转换为从通过CommonCrypto加密返回的NSString后出错?

这是我的代码:

-(IBAction)encryptText:(id)sender
{
key = self.tvKey.text;

CCCryptorStatus status = kCCSuccess;                                        
algorithm = kCCAlgorithmAES128;                                                
CCOptions opts = kCCOptionPKCS7Padding;

NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];

NSString *plainString = [NSString stringWithFormat:@"%@", self.tvEntryText.text];
NSData *plainData = [plainString dataUsingEncoding:NSUTF8StringEncoding];

NSData *encryptedData = [plainData dataEncryptedUsingAlgorithm: algorithm     
                                                           key: keyData       
                                          initializationVector: nil             
                                                       options: opts           
                                                         error: &status];    


if ( status != kCCSuccess ) {
    NSError * err = [NSError errorWithCCCryptorStatus: status];
    self.lblKeyMsg.text = [NSString stringWithFormat:@"Encryption failed: %s", [[err localizedDescription] UTF8String]];
    self.lblKeyMsg.textColor = [UIColor redColor];
    return;
}

NSString *encryptedString = [[[NSString …
Run Code Online (Sandbox Code Playgroud)

encryption objective-c ios4 commoncrypto

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