Articles of iphone

正确释放一个viewController,将其设置为其他类的委托?

我做的第一件事是创建一个ViewController并将其推送到导航控制器。 viewController = [[MyViewController alloc] init]; [navController pushViewController:viewController animated: NO]; [viewController release]; 保留计数现在是2(pushViewController使用2保留显然但不是我的责任)到目前为止一切都很好。 在MyViewController中,我正在创建一个类的实例,并将ViewController设置为该实例的委托。 timer = [[MyBackgroundTimer alloc] initWithInterval:20]; [timer setDelegate:self]; 现在viewControllers保留计数增加了1因为setDelegate: 但是当我稍后释放viewController时,它永远不会调用dealloc因为我还有一个保留计数。 当您将自己设置为委托时,如何正确删除保留计数?

– :发送到解除分配的实例的消息

我已使用委托将NSArray值传递回父视图。 它是在父视图中接收的 – (void) setManufactureSearchFields:(NSArray *)arrayValues withIndexPath:(NSIndexPath *)myIndexPath { manufactureSearchObjectString = [arrayValues valueForKey:@”MANUFACTURER”]; NSLog(@”%@”,[arrayValues valueForKey:@”MANUFACTURER”]); manufactureResultIndexPath = myIndexPath; [self.tableView reloadData]; //reloads the tabels so you can see the value in the tableViewCell. } 如果我要执行此代码并选择子视图的表格单元格,它显然执行委托,但随后冻结并将此错误激发到日志 2011-10-31 14:06:16.670 code[12610:207] ( “Alfa Romeo” ) 2011-10-31 14:06:16.673 code[12610:207] *** -[__NSArrayI isEqualToString:]: message sent to deallocated instance 0x6859280 但是,如果我在委托方法中注释掉以下行 – […]

杀死线程或替代方案

有什么方法可以通过以下方式杀死线程: [NSThread detachNewThreadSelector:@selector(serverFetchInThread) toTarget:self withObject:nil]; 我正在处理的场景是,在我的主线程中,我让用户在我的搜索栏中输入数据以及用户输入的内容我需要发送到服务器以便在单独的线程中进行搜索。 现在,如果用户通过删除旧数据并输入新数据来更改其选择,我不希望先前的线程浪费时间,杀死它并使用新数据生成新线程。 有没有其他更好的方法来处理这种情况,请指导我。

我们可以在IOS SDK iphone中检索序列号,颁发者DN,x509证书的主题详细信息

我们可以使用ios sdk或Openssl检索X509证书详细信息(序列号,发卡者DN,主题详细信息)吗?

使用NSPredicate获取核心数据对象的问题

在开始之前,让我告诉你我的数据模型是什么样的: 然后我有一个带有以下谓词的获取请求: NSArray *allowedPackNames = @[@”success, happiness, free”]; self.fetchedResultsController = [Author MR_fetchAllGroupedBy:nil withPredicate:[NSPredicate predicateWithFormat:@”ANY quotes.quote.pack.packName IN %@”, allowedPackNames] sortedBy:AuthorKeys.name ascending:YES delegate:self]; 我想获取所有具有成功或幸福或免费的packName引用的作者。 如下面的关系表中所示,作者有一组NSB引号。 但是,当我执行此操作时,我收到以下错误: CoreData: error: (1) I/O error for database at /Users/Abdul/Library/Application Support/iPhone Simulator/6.1/Applications/DA17421B-A54D-42E3-9694-FDCBFF7F8BA4/Library/Application Support/MyCoolApp/MyCoolApp.sqlite. SQLite error code:1, ‘no such column: t2.ZQUOTE’ 2013-04-05 15:26:47.175 MyCoolApp[78622:c07] Core Data: annotation: -executeRequest: encountered exception = I/O error […]

在iOS中显示多个视图的最佳实践

我正在尝试构建一个教育应用程序,它将拥有大约3-5个完全不同的页面/屏幕。 每个屏幕包含一个谜题,每个谜题独立于所有其他谜题(屏幕)。 一旦解决了当前屏幕上的谜题,我想转换到一个新的(随机选择的)屏幕。 我会允许多次显示相同的谜题,但是,如果它已经显示之前需要重置。 我尝试使用segues这样做,但这似乎需要一个UINavigationController,这不是我想要呈现的体验(因为它需要预定义的屏幕层次结构)。 我假设最好的方法是让每个屏幕都是完全独立的UIViewControllers,对吗? 我只是不确定如何协调它们之间的导航/渲染。 我很欣赏你所知道的最佳实践。 谢谢!

Xcode 4导航项目提示属性行为不端?

在Interface Builder中进行设计并将文本添加到提示属性时,它会创建一个额外的顶部标题。 这需要在导航栏中允许2个图块所需的额外厚度。 一旦我删除了文本,让我们说重新设置它的方式,它保持那个厚度,即使那里没有文字。 在运行时,切换视图会使条形增长和缩小,这并不好。 我的问题是,如何将其重置为默认的单行粗细条? 谢谢吉姆

OpenGL ES(在iOS上):glDrawArrays上的EXC_BAD_ACCESS调用球体绘制

我需要一个程序生成的OpenGL ES球体 – 我用Google搜索并发现了这个OGL代码 ,并认为它看起来整洁,所以我将其修改为OGLES。 我删除了仅使用OGL的glBegin(),glEnd()并将原始的drawtri和drawsphere修改为generatetri和generateSpherePoints。 这些新函数将GLfloat值分配给球体法线和顶点的静态数组,这意味着我可以随心所欲地调用一个新函数drawSphere(),并且不需要重新计算这些点。 我还在generateSpherePoints中添加了x,y,z参数,允许指定非零球心。 问题是我的OGLES版本在glDrawArrays行的XCode中给出了一个EXC_BAD_ACCESS。 通过调试器,我检查了’sphereNormals’和’sphereVertices’数组,它们看起来很好。 如果有人可以提出问题的原因,我会非常感激,因为我现在对此一无所知! #define SX .525731112119133606 #define SZ .850650808352039932 /* Drawing Sphere */ static GLfloat vdata[12][3] = { {-SX, 0.0, SZ}, {SX, 0.0, SZ}, {-SX, 0.0, -SZ}, {SX, 0.0, -SZ}, {0.0, SZ, SX}, {0.0, SZ, -SX}, {0.0, -SZ, SX}, {0.0, -SZ, -SX}, {SZ, SX, 0.0}, {-SZ, SX, […]

为什么从NSObjectinheritance的对象的大小是16bytes

我有一个从NSObjectinheritance的新对象 Car *myCar = [[Car alloc] init]; 这将返回16, Car对象的大小 printf(“myCar object: %d\n”, sizeof(*myCar)); 请帮助我说清楚,谢谢

裁剪和缩放CGContext – iOS

根据我之前关于裁剪和缩放CMSampleBufferRef的问题 ,我找到了一种方法来修改CMSampleBufferRef中的CGContext,并且我能够使用以下代码绘制CGContext的矩形,路径,圆和清除矩形: – (void)modifyImage:(CMSampleBufferRef) sampleBuffer { CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); // Lock the image buffer CVPixelBufferLockBaseAddress(imageBuffer,0); // Get information about the image uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer); size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer); size_t width = CVPixelBufferGetWidth(imageBuffer); size_t height = CVPixelBufferGetHeight(imageBuffer); // Create a CGImageRef from the CVImageBufferRef CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(baseAddress, width, […]