我是iPhone开发人员的新手...我正在构建一个从本地sqlite3数据库加载数据的应用程序
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
Run Code Online (Sandbox Code Playgroud)
当我点击iPhone按钮并将其放在背景中然后我回想起它我看到(正常)应用程序的方式与我离开它的方式相同.我想做的是,当它出现在foregroud中时,重新加载数据就像从头开始调用一样.
这是正确的方法吗?
在此先感谢c.
有人能告诉我们如何将静态变量声明为Objective C类的一部分吗?我希望这能跟踪我使用此类创建的实例数.
我被要求删除弹出视图的箭头.
我想要NSButton一张图片和一张替代图片.按下按钮时应显示备用图像,我还想从代码中显示备用图像,调用类似的内容[button setSelected:YES].这可能不用手工编织alternateImage物业吗?
我想通过AVAssetReader读取视频样本,我遇到了各种各样的路障.可以使用应用程序包中的一个名为"Movie.m4v"的视频设置AVAsset并使用AVAssetReader循环浏览视频帧(CMSampleBufferRef).
这里有一些我现在使用的代码不起作用:
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Movie.m4v"];
AVAsset *avAsset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:path] options:nil];
NSError *error = nil;
AVAssetReader *reader = [[AVAssetReader alloc] initWithAsset:avAsset error:&error]; // crashing right around here!
// I've gotten avassetreader to not crash upon initialization by grabbing an asset from the ALAssetsLibrary but it says it has 0 tracks!
NSArray *videoTracks = [avAsset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack *videoTrack = [videoTracks objectAtIndex:0];
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey];
AVAssetReaderTrackOutput *asset_reader_output = [[AVAssetReaderTrackOutput alloc] …Run Code Online (Sandbox Code Playgroud) 我们的小软件商店最近从Subversion迁移到Git,因为我们的程序员更好地发现了Git.迁移并非轻松,我们遇到子模块功能问题.我的主要抱怨是,一旦repo包含子模块,你就不能简单地克隆它并期望它能够正常工作.您必须执行额外的步骤来初始化和下载子模块.后续拉动应该自动更新子模块,这样就可以了.但是当我添加一个新的子模块时,推送提交和人们拉动,他们不会自动获得新的子模块,他们必须git submodule update再次手动.
这是愚蠢的,因为人们不能简单地用子模块拉回购物并期望它的构建.这种理解是否正确?程序员可以简单地编写脚本或别名来在接收新提交后更新子模块,但对于我们的非程序员子模块来说很痛苦.我想提出一个解决方案,无论使用何种Git客户端,克隆/拉动后repo都能正常工作.
我有什么选择?
我正在创建一个从数据库中获取一组结果的应用程序 - 我使用MBProgressHUD来显示带动画的查询进度.我使用的方法在另一个线程中执行方法时调用动画,一旦完成,它就会隐藏动画.我的问题是,在致电:
[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];
Run Code Online (Sandbox Code Playgroud)
我想,如果没有结果,则显示一条警告,说明这一点,如果有,则加载下一个视图.到目前为止,我有这个代码:
[HUD showWhileExecuting:@selector(getResults) onTarget:self withObject:nil animated:YES];
if(self.thereAreEvents) {
[self performSegueWithIdentifier:@"searchResults" sender:self];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No results" message:@"Sorry, there are no results for your search. Please try again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
Run Code Online (Sandbox Code Playgroud)
self.thereAreEvents在getResults方法结束时设置.但是,由于该方法在另一个线程中被调用,因此即使数据库中存在事件,该执行行也会继续并显示警报.
所以,从这里开始,我有两个问题:在iOS中实现等待信号机制的最简单方法是什么?在iOS中实现这种机制的最有效方法是什么?
谢谢!
我注意到Xcode(或更确切地说是Apple LLVM编译器?)不再需要正向方法声明.换句话说,以下代码构建时没有警告:
@implementation Foo
-(void) foo {
[self bar];
}
-(void) bar {}
@end
Run Code Online (Sandbox Code Playgroud)
这曾经发出警告-foo说Foo可能没有回应-bar,对吧?编译器现在更聪明还是其他的东西?我正在使用Xcode 4.3.1和Apple LLVM编译器3.1.
官方文档是否在某处讨论有关CloudKit的一致性?根据我的测试,它似乎最终是一致的 - 在写完之后立即读取记录可能有用而且可能不会(返回空结果):
CKDatabase *database = [[CKContainer defaultContainer] publicCloudDatabase];
CKRecord *record = [[CKRecord alloc] initWithRecordType:@"Foo"];
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[database saveRecord:record completionHandler:^(CKRecord *record, NSError *error) {
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Foo" predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
[database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
XCTAssertEqualObjects(results, @[], @"Freshly written object not returned by query."); // succeeds
dispatch_semaphore_signal(semaphore);
}];
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
Run Code Online (Sandbox Code Playgroud)
有没有办法强制强烈一致的读取,以反映所有以前的更新?
无论如何,是否有等待用户通过使用 DispatchQueue 或其他方式按下在 swift 3 中关闭 alertController 的按钮?
ios ×4
iphone ×3
cocoa-touch ×2
objective-c ×2
avfoundation ×1
cloudkit ×1
cocoa ×1
git ×1
ipad ×1
llvm ×1
macos ×1
multitasking ×1
nsbutton ×1
swift ×1
xcode ×1