我有以下代码来创建一个NSTimer应该在每次触发时更新标签的代码:
.h文件
@interface Game : UIViewController
{
NSTimer *updateTimer;
UILabel *testLabel;
int i;
}
-(void)GameUpdate;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件
@implementation Game
-(void)GameUpdate
{
i++;
NSString *textToDisplay = [[NSString alloc] initWithFormat:@"Frame: %d", i];
[testLabel setText:textToDisplay];
NSLog(@"Game Updated");
}
- (void)viewDidLoad
{
[super viewDidLoad];
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.01428 target:self selector:@selector(GameUpdate) userInfo:nil repeats:YES];
}
//other methods (viewDidUnload, init method, etc.)
@end
Run Code Online (Sandbox Code Playgroud)
当我运行它时,顶部会出现一个标签,显示"0"但不会改变.它让我相信我错过了如何NSTimer设置.我错过了什么?
我使用断点和(如您所见)记录以查看方法是否实际运行,而不是其他一些错误.
我有一个NSTableView我的默认行为有一些问题.
如果我keyDown:在类别中重写了方法,如下所示:
- (void) keyDown:(NSEvent *)event {
[super keyDown:event];
}
Run Code Online (Sandbox Code Playgroud)
我无法再使用键盘箭头键更改行选择.这是为什么?
cocoa objective-c event-handling nstableview objective-c-category
我在Objective-C中实现了一个用于OOP练习的小cmd计算器.我正在获取双打输入scanf()并获取输入,我用于%f格式化然后将其放入double变量中.由于某种原因,它总是读取输入奇数.我不知道发生了什么,但当我将所有类型更改为int时,它完美地完成了.
在Xcode 4中,如果字体未安装在操作系统中或未显示在IB中的字体列表中,则无法通过Interface Builder设置视图标签的字体系列.
由于某些视图中的所有标签都使用相同的字体,因此我需要知道是否有一种简单快捷的方法将所有标签设置为相同的字体系列,而不是逐个设置其系列字体.
如果我使用dictionaryWithObjects:forKeys:,并且我的数组键碰巧有重复,会发生什么?我假设重复键的最后一个实例将是与键相关联的值; 那是对的吗?
我在NSString课堂上宣布一个类型的ivar .要初始化此ivar的值,我使用以下代码:
NSString *myVar;
-(void)inAnyMethod
{
myVar = [NSString stringWithFormat:@"%@",theValue];
}
Run Code Online (Sandbox Code Playgroud)
我必须释放这个伊娃吗?根据我的理解,这不是我的责任.但在大多数情况下,我以这种方式使用的字符串会导致泄漏.
我错过了什么?
假设我有一个UILabel涵盖应用程序整个窗口的内容.在此标签中显示不同长度的随机文本.是否可以根据文本长度更改文本字体大小?
我正在尝试使用以下代码段解密文件,该文件使用32字节密钥加密.因此,当我尝试加密文件数据时,一切正常.但是当我尝试解密时,程序甚至不会if (cryptStatus == kCCSuccess)在CryptoExtensions.m中传递条件.我真的很累,想出一个问题.我试图使用Base64解码,但我的文件以UTF8编码保存,所以当我把它的内容放在NSData的日志中时我没有问题:
NSData *fileData = [[[NSData alloc] initWithContentsOfFile:destPath] autorelease];
NSLog(@"File data:%@",[[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]);
Run Code Online (Sandbox Code Playgroud)
但是当我试图解密它时,我nil从CryptoExtensions方法获得:
NSData *aesResponse = [fileData AES256DecryptWithKey:@"4QXcCZlgRAIchiaqkMVpF3nkpARmdL3z"];
NSLog(@"AES:%@",[[NSString alloc] initWithData:aesResponse encoding:NSUTF8StringEncoding]);
Run Code Online (Sandbox Code Playgroud)
这是crypto片段的内容:
CryptoExtensions.h
#import <Foundation/Foundation.h>
@interface NSData (CryptoExtensions)
- (NSData*)AES256EncryptWithKey:(NSString*)key;
- (NSData*)AES256DecryptWithKey:(NSString*)key;
@end
Run Code Online (Sandbox Code Playgroud)
CryptoExtensions.m
#import "CryptoExtensions.h"
#import <CommonCrypto/CommonCryptor.h>
@implementation NSData (CryptoExtensions)
- (NSData*)AES256EncryptWithKey:(NSString*)key {
// 'key' should be 32 bytes for AES256, will be null-padded otherwise
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill …Run Code Online (Sandbox Code Playgroud) 有一个属性被调用Application does not run in background,如果我们设置它YES,应用程序将在它进入后台时结束.但我无法找到这个属性.有人能告诉我这个设置的位置吗?
objective-c ×7
cocoa-touch ×4
ios ×3
cocoa ×2
uilabel ×2
command-line ×1
macos ×1
memory-leaks ×1
nsdictionary ×1
nsstring ×1
nstableview ×1
nstimer ×1
python ×1
quine ×1
retain ×1
scanf ×1