小编Jas*_*ien的帖子

简单的Objective-C过度释放*应该*崩溃不会崩溃.为什么?

我的调试器坏了,或者有一些我不理解的基础.

我在一个非常基本的命令行程序中有一些非常基本的代码应该崩溃.但是,它并没有崩溃.

int main (int argc, const char * argv[])
{
    NSString *string = [[NSString alloc] initWithString:@"Hello"];

    [string release];

    NSLog(@"Length: %d", [string length]);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

对于有效的字符串,log语句打印"Length:5".但是,该字符串应该被该点释放,并且exec_bad_access应该抛出错误.

我已经尝试了附带调试器的代码并且没有附加调试器 - 两者都给出了相同的结果.我也启用(和禁用)NSZombie,这似乎没有任何影响(我最初认为这是问题,因为NSZombie对象永远不会被释放 - 但它仍然不会因NSZombie禁用而崩溃).

我在我的本地.gdbinit文件中设置了断点来打破诸如-[NSException raise]和之类的东西objc_exception_throw.我还在许多方法上设置断点NSZombie以捕获它们.

fb -[NSException raise]
fb -[NSAssertionHandler handleFailureInFunction:file:lineNumber:description:]
fb -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:]

#define NSZombies
# this will give you help messages.  Set to NO to turn them off.
set env MallocHelp=YES …
Run Code Online (Sandbox Code Playgroud)

crash debugging memory-management objective-c foundation

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

NSCollectionViewItem视图的子视图始终为零

我有一个非常基本的设置NSCollectionView.我有一个子类NSCollectionViewItem,用作itemPrototype集合视图.集合视图项具有视图.

使用Interface Builder,我NSImageView在集合视图项的视图中添加了一个并连接IBOutlet到我的集合视图项子类的实例.对于该物业IBOutlet是用来retain为它的内存管理.

我的目标是每当集合视图项的选择状态发生更改时隐藏或显示此图像视图.但是在setSelected:方法中我的图像视图的属性是零,即使我100%确定它的插座已连接,其属性设置为保留,我没有取消设置或释放图像视图.

我对集合视图项有类似的问题,其中添加到视图的活动指示符也始终为零.为什么会发生这种情况,我需要做些什么来解决它?

cocoa appkit

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

如何将时间字符串插入GDB日志?

我最近发现你可以在Xcode中设置断点,它将打印到控制台并自动继续 - 这意味着你可以插入日志语句而不必编写NSLog()调用并重新编译(动态日志记录,woot).

唯一的问题是它在执行日志时可以显示的内容似乎有点受限.它显示了一些你可以插入的标记,比如%B打印出一些关于当前断点的信息或%H的命中计数.

我想知道是否有任何方法可以将特定格式的时间戳插入日志行?

我尝试使用"shell脚本"断点操作,但它告诉我date命令不存在....奇怪...

任何帮助都会很棒,谢谢你们!

iphone debugging xcode gdb breakpoints

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

调用ReloadData时的UITableView绘图问题

我有一个非常大的'项目列表'(最多250个条目),这是不断变化的.该列表显示在UITableView中.

我有一个轮询线程,它将下载一些新条目并将它们插入到SQLite DB中.

当新条目到达时,我调用我的表视图数据源对象来更新其数据集,该数据集运行SQL查询并返回一个新的条目数组.

完成后,我在表视图上调用-reloadData.发生这种情况时,在大约7个案例中,表格视图绘制为空白(不显示单元格,只显示表格的背景颜色),直到进行后续的-reloadData调用.触摸表格视图(滚动,选择单元格,任何会强制重绘的内容)都会重新出现.

表视图,它的IBOutlet指针和它当前显示的单元格在我看到空白绘图错误的时候都是有效的,所以我相信它们没有被释放.

我一直在努力调试这几天,而且它真的开始推动我了.

对此有任何帮助都会非常棒,谢谢.

iphone cocoa-touch objective-c uitableview uikit

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

关于在Objective-C中包装C库的提示

我有一个用C编写的库,我想在Objective-C应用程序中使用,无论是在Mac还是iPhone上.

不幸的是,由于这个库是由开源空间中的个人编写的,因此文档非常稀疏且不完整.虽然我可以弄清楚如何使用库中的东西,但我并没有真正了解整个代码库.

我想要做的是将库包装到Objective-C中的一些易于使用和可转移的类中.

  • 有没有人有关于如何处理这个问题的任何提示?
  • 有关获得图书馆结构的可视化层次结构的最佳方法的任何建议吗?
  • 我将如何决定如何最好地构造包装器以实现可重用性和易用性?

任何和所有的帮助将不胜感激,谢谢!

c objective-c word-wrap

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

设置animationDidStopSelector:在UIView的动画委托上

我想我过去一年半的iPhone开发经历一直都是这样做的...我可以使用一些知识渊博的澄清!

正如您可能知道或不知道的那样,使用该beginAnimations:forContext:方法可以很容易地动画UIView属性,并通过commitAnimations调用将其包装起来.

您还可以设置动画委托,以便在动画的某些部分出现时执行操作,例如开始,结束等.

我已经在我的代码中使用了UIView动画很长一段时间并且从来没有遇到任何严重的问题,但我只是遇到了一些我一定错过的文档部分.

UIView的文档setAnimationDidStopSelector:声明传入此方法的任何选择器应采用以下形式:

- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;
Run Code Online (Sandbox Code Playgroud)

我根本没有这样做过.我一直在设置不带参数的普通旧doThisdoThat类型选择器.

我一直在接受什么?我应该重写我的所有代码以使用记录的表单吗?或者,如果我需要知道动画是否在停止之前完成或者需要将一些特定于上下文的数据传递给方法,那么这个形式是为了方便吗?

iphone animation delegates uiview

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

不同高度的UITableViewCells将其配件放置在不同的X位置

我的应用程序有一些高度不同的表格单元格.单元格还可以具有UIButton作为附件视图的细节公开按钮(圆形,带箭头的蓝色).

根据单元的高度,附件视图的位置不同.起初我以为是我的单元格的布局代码引起了问题,所以我设置了一个快速的独立测试,使用vanilla UITableCells来消除它可能是我的错.

我在界面构建器中设置了一个视图,只是将一个视图表单元格添加到视图中,将它们的高度设置为不同的值,然后为每个值添加一个详细的公开按钮.没有更多,没有更少.

这就是我所看到的:

具有不同x值的UITableViewCells http://jasarien.com/jing/accessoryView_x_difference.png

我添加了尺寸指南(感谢Xscope),因此您可以看到附件视图x位置的差异.

高度是:

  • 前37px
  • 中期68px
  • 底部44px(默认,未触动的高度)

如果我增加高于68px的高度,则附件视图不会向左移动.

这是一个错误吗?有什么办法可以防止这种情况发生吗?

这是重现的测试项目.

TableViewCellHeightsTest.zip

iphone uitableview uikit

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

在Javascript中封装

我对Javascript很新,因为我的SO资料会证明.

我刚刚在几个教程阅读并遇到我做的事情时,使用JavaScript应用并不完全在理解方面对面向对象和封装.

该教程声明Javascript对象可以这样声明:

var myCustomObject = new Object();
Run Code Online (Sandbox Code Playgroud)

你可以给它像这样的实例变量:

myCustomObject.myVariable = "some value";
myCustomObject.myOtherVariable = "deadbeef";
Run Code Online (Sandbox Code Playgroud)

最后,它声明您可以创建一个模板函数来创建这样的新对象:

function CustomObject(myVariable, myOtherVariable)
{
    this.myVariable = myVariable;
    this.myOtherVariable = myOtherVariable;
}
Run Code Online (Sandbox Code Playgroud)

我也知道,你可以创建并赋值给尚不存在,因此被隐式声明,如例如,当看到变量myCustomObject没有一个myVariable,但现在它的作用.

所以,我的问题是:有什么可以阻止在代码中的其他点添加新变量.如果我试图了解一个对象如何工作以及我能用它做什么,我可能永远不会看到其他.js文件中可能存在的变量,因此无法完全理解该对象. ..

另外,我怎么知道刚刚创建的某个对象不会突然在代码中添加60多个变量,这些变量在创建时根本没有提到?

你是否意味着能够一眼就能理解一个对象可以包含的内容,如果可以添加更多内容"willy nilly"?

javascript oop encapsulation

5
推荐指数
2
解决办法
2636
查看次数

将内阴影应用于UILabel

我想将内阴影应用于UILabel.我有一个解决方案,但它还不够好.谁有更好的解决方案?

// UILabel subclass

- (void) drawTextInRect:(CGRect)rect {
    CGSize myShadowOffset = CGSizeMake(0, 2);
    float myColorValues[] = {255, 0, 0, 1};

    CGContextRef myContext = UIGraphicsGetCurrentContext();
    CGContextSaveGState(myContext);

    CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB();
    CGColorRef myColor = CGColorCreate(myColorSpace, myColorValues);

    CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);
    CGContextSetBlendMode(myContext, kCGBlendModeLighten);

    [super drawTextInRect:rect];

    CGColorRelease(myColor);
    CGColorSpaceRelease(myColorSpace); 

    CGContextRestoreGState(myContext);
}
Run Code Online (Sandbox Code Playgroud)

我熟悉UILabel的图层属性,但shadow offset给我们一个外阴影,而不是内阴影(除非我遗漏了什么).

iphone shadow uilabel ipad ios

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

在Xcode中作为"运行脚本"阶段运行时,OpenSSL构建脚本失败(在Xcode之外成功)

我正在尝试运行一个脚本来构建iOS的OpenSSL(armv6,armv7和i386)作为Xcode中的"运行脚本"阶段.

从命令行作为独立脚本运行时,脚本成功构建.其结果是编译libcrypto.a,libssl.ainclude用头目录.

但是,当我在Xcode中将脚本作为运行脚本阶段运行时,它会在make和错误结束时说明它无法找到libcrypto引用的任何符号.

shlib_target=; if [ -n "" ]; then \
        shlib_target="bsd-gcc-shared"; \
    fi; \
    LIBRARIES="-L.. -lssl  -L.. -lcrypto" ; \
    make -f ../Makefile.shared -e \
        APPNAME=openssl OBJECTS="openssl.o verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o ca.o pkcs7.o crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o x509.o genrsa.o gendsa.o genpkey.o s_server.o s_client.o speed.o s_time.o apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o nseq.o pkcs12.o pkcs8.o pkey.o pkeyparam.o pkeyutl.o spkac.o smime.o cms.o rand.o engine.o …
Run Code Online (Sandbox Code Playgroud)

iphone bash xcode openssl build-script

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