小编Sam*_*Sam的帖子

你为什么要用ivar?

我通常会看到这个问题是另一种方式,例如每个伊娃都必须是财产吗?(我喜欢bbum对这个Q的回答).

我几乎只在我的代码中使用属性.然而,每隔一段时间,我就与一位长期在iOS上开发并且是传统游戏程序员的承包商合作.他编写的代码几乎没有声明任何属性,并且依赖于ivars.我认为他这样做是因为1.)他已经习惯了,因为在Objective C 2.0(2007年10月)和2)之前,属性并不总是存在,因为没有经过getter/setter的最小性能增益.

虽然他编写了不泄漏的代码,但我仍然希望他使用ivars上的属性.我们讨论过它,他或多或少看不到使用属性的理由,因为我们没有使用KVO,而且他在处理内存问题方面经验丰富.

我的问题更多......为什么你会想要使用伊娃时期 - 经验丰富与否.使用ivar真的有很大的性能差异吗?

另外作为澄清点,我根据需要覆盖了setter和getter,并使用与getter/setter中的属性相关的ivar.但是,在getter/setter或init之外,我总是使用self.myProperty语法.


编辑1

我感谢所有好的回应.我想解决的一个看起来不正确的是,使用ivar你可以获得封装,而不是使用属性.只需在类继续中定义属性即可.这会将财产隐藏在外人之外.您还可以在接口中声明属性readonly,并在实现中将其重新定义为readwrite,如:

// readonly for outsiders
@property (nonatomic, copy, readonly) NSString * name;
Run Code Online (Sandbox Code Playgroud)

并在课堂上继续:

// readwrite within this file
@property (nonatomic, copy) NSString * name;
Run Code Online (Sandbox Code Playgroud)

让它完全"私有"只在类继续中声明它.

memory-management objective-c key-value-observing ios ivar

151
推荐指数
7
解决办法
3万
查看次数

在PDF中使用Javascript

在哪里可以找到有关在PDF中运行Javascript的文档?

我从未在pdf中添加javascript动作.但是,我已经使用javascript做了很多web开发.对于熟悉PDF中的javascript的人,我有几个问题.

NitroPDF和Adobe Acrobat肯定支持PDF格式的javascript. 是否有存在的各种对象的标准和通过javascript操作pdf的功能? 到目前为止我发现的一切都来自Adobe.其他任何地方似乎都参考了Adobe的文档.那里有标准,还是Adobe只是"de Facto"标准?

此外,所有PDF查看器都支持JavaScript操作吗?

在我可以找到的pdf文档中使用javascript的最佳文档来自Adobe - Adobe :: Acrobat Javascript脚本指南.

NitroPDF有这个链接 - 在PDF文件中的NitroPDF :: Javascript,但它基本上只是说它支持Adobe所拥有的.

我还从Scribus发现了这个链接 - Scribus ::如何使用JavaScript增强PDF表单,但这只包括一小段代码.没有什么超级有用的.

Adobe有关于如何使用IDE为javascript设置断点等的文档.是否可以使用另一个IDE在pdf中运行javascript并有断点等...?找到像Firebug一样酷的东西真是太棒了.

注意:

请不要回答如何操作Web浏览器中加载的PDF.问题是关于从PDF文档中运行javascript.我正试图通过在PDF文档中执行javascript来探索可用的可能性.具体来说,我可以使用quickpdflibrary中的函数将javascript功能添加到现有文档中.

编辑

另一个有用的链接是使用Acrobat Javascript进行开发.显然,PDF格式的js经常被称为AcroJS或Acrobat JavaScript.

javascript pdf documentation acrobat pdf-manipulation

69
推荐指数
3
解决办法
9万
查看次数

具有LIKE和IN条件的参数化查询

.Net中的参数化查询在示例中总是如下所示:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID = @categoryid
", 
   conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Run Code Online (Sandbox Code Playgroud)

但是我碰到了一堵砖墙试图做到以下几点:

SqlCommand comm = new SqlCommand(@"
   SELECT * 
   FROM   Products 
   WHERE  Category_ID IN (@categoryids) 
      OR  name LIKE '%@name%'
", 
   conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Run Code Online (Sandbox Code Playgroud)

哪里

  • CategoryID是以逗号分隔的数字列表"123,456,789"(不带引号)
  • Name是一个字符串,可能带有单引号和其他错误字符

什么是正确的语法?

.net sql parameters sql-injection parameterized

47
推荐指数
3
解决办法
3万
查看次数

如何在ios中进行多线UILabel?

我正在动态填充标题(UILabel).有时它太长了,IOS挤压字体以适应宽度.有没有办法使用相同的字体大小做多行?

objective-c multiline uilabel ios

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

如何手动标记iOS崩溃以查看崩溃日志

试图调试应用程序.麻烦的是我找不到这个程序.

symbolicatecrash.sh

sudo cp /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash /usr/local/bin/
Run Code Online (Sandbox Code Playgroud)

它是单独的下载吗?我正在使用XCode 3.2.3

谢谢.

iphone crash-log ipad symbolicatecrash ios

26
推荐指数
3
解决办法
4万
查看次数

何时检查"此应用程序使用加密"框?

提交或更新应用时,您面临的一个问题是:

自上次上传此产品的二进制文件以来,您是否添加或更改了加密功能?

图片: 在此输入图像描述

我的问题是,如果我使用从<CommonCrypto/CommonCryptor.h>库中获得的加密,我是否必须对该Q进行检查?

我有一个文件,我想加密,发送到iPhone,并使用CommonCrypto在iPhone上解密.与同事交谈时,我得到了不同的回答.有些人认为,由于它是一个包含在内的公平游戏框架,其他人则表示你必须得到政府的批准.

看起来CommonCrypto支持(充其量)采用ECB密码模式的AES 128位加密.所以,这就是我计划使用的东西.

附注:我计划在github 上使用AlanQuatermain/aqtoolkit中NSData+CommonCrypto类别.这只是CommonCrypto的一个包装,仅此而已.

相关的是,如果您使用HTTPS(SSL),是否必须选中YES?请参阅进行HTTPS(TLS)连接的应用程序的iPhone加密导出合规性 - 续.我不需要https连接,但这让我感到惊讶......

encryption https aes ios commoncrypto

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

使用ClientBuildManager.CompileFile进行就地编译

我正在开发一个我想使用就地编译的网站,以便让第一次点击更快.我想用ClientBuildManager.CompileFile进行就地编译的方法,以便我控制编译过程.由于各种原因,这是编译本网站的理想方式.

为什么IIS在"临时ASP.NET文件"下构建到不同的子目录?

当我通过文件编译网站文件时ClientBuildManager.CompileFile在为此目的构建的exe中的方法,输出转到"临时ASP.NET文件"下的子目录.但是,当以后点击网站时,IIS会在"临时ASP.NET文件"下的不同子目录下重建控件,使之前的就地编译变得毫无价值.

注意:在"临时ASP.NET文件"下的就地编译期间创建的程序集将保持不变(仍然存在).

注意:就地编译程序集文件夹和IIS生成的程序集文件夹都位于相同的"Temporary ASP.NET Files"目录下.

例:

  • C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\2ba591b9\[ 就地编译文件夹名称 ]
  • C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\2ba591b9\[ IIS为网站生成程序集 ] \

ClientBuildManager.CompileFile组态

var buildParameter = new ClientBuildManagerParameter
   {
      PrecompilationFlags = PrecompilationFlags.Default,
   };
var clientBuildManager = new ClientBuildManager(
   RootVirtualPath, RootPhysicalPath, null, buildParameter);
...
clientBuildManager.CompileFile(relativeVirtualPath, callback);
Run Code Online (Sandbox Code Playgroud)

哪里RootVirtualPath是简单的""默认网站. RootPhysicalPath指向网站磁盘上的位置. relativeVirtualPath形式为"〜/ myFile.aspx".回调用于跟踪进度.

c# asp.net iis-7 .net-4.0

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

如何禁用iOS系统声音

我正在开发一款iPad应用程序,可与播放声音的配件连接.当iPad连接到配件时,我想将所有系统声音静音但允许其他声音(iPod).

造成这种情况的部分原因是附件是在现场演出期间使用的.显然,让电子邮件,警报或任何其他系统声音通过并放大(疯狂大声)会很烦人.

我已经看过使用AVAudioSession(阅读音频会话了解更多)并尝试了所有的AudioSessionCategories.这些类别都不会使系统声音静音,而是只允许您静音应用程序声音(iPod) - 对我的目的无用.

我还在" 系统声音服务 " 上找到了文档,但这只允许你播放系统声音.这里没有api可以在你的应用程序运行时禁用系统声音.

最后一点,我们通过包含MPVolumeView轻松调整iPad级别(音量),但我们希望用户想要播放iPod音乐.如果在播放iPod中的音乐(或音乐从其他应用程序)和电子邮件来过,你会惊讶有LOUD /烦人,电子邮件通过我们的配件去时,突然变得.甚至可能会损坏设备.:d

iphone ipad ios

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

如何判断对象是否在NSAutoreleasePool中

我想知道一个对象被自动释放了多少次.我已经使用了足够长的目标c,通常可以直接知道某个对象是否已经自动释放,但是我经常会看到处理内存和保留计数的问题.在某些时候,答案总是结束,"你不能相信一个对象的retainCount" - 我同意这一点,但如果你能确定一个对象被自动释放的次数,那么你真的可以信任 retainCount如果你添加了像这样的类别:

@interface NSObject (NSObject_MemoryDebugging)
- (NSUInteger) autoReleaseCount;
- (NSUInteger) retainCountWithAutoRelease;
@end

@implementation]
/** Determine how many times this object has been marked for autorelease **/
- (NSUInteger) autoReleaseCount;
{
   // ??? not sure how to figure this out.
   return 0;
}

 - (NSUInteger) retainCountWithAutoRelease
{
   NSUInteger retainCount = [self retainCount];
   NSUInteger autoReleaseCount = [self getAutoReleaseCount];  // ???
   return retainCount - autoReleaseCount;
}
@end
Run Code Online (Sandbox Code Playgroud)

对于不可变类型仍然存在异常,因为这些通常会在复制期间增加保留计数,因此您仍然无法信任retainCount.

我不建议的

我不是在生产代码中使用retainCount来寻求此答案.但是,我可以看到这对于调试内存问题的人来说很有价值.

我想有些人会讨厌这个问题,因为程序员不应该关心对象被自动释放的次数.编码应该是关于平衡分配,保留,复制,新版本和故事结束.然而,重点是帮助人们敲打头脑. [NSObject retainCount]烧了很多人,这个问题的答案会很酷.

我确定有一种方法可以确定一个对象被自动释放的次数.我只是不知道它是什么,因此问题.

看到类似的问题:Objective-c中NSAutoreleasePool内的对象.

编辑


谢谢大家的答案.你可能会发现这个有趣的=> …

memory-leaks objective-c nsautoreleasepool ios retaincount

8
推荐指数
2
解决办法
2564
查看次数

为什么EAAccessoryDidConnectNotification会发生两次?

我有一个课程来管理来自和外部附件到iPad的消息.在init中我有以下代码:

- (id) init
{
    self = [super init];
    if (!self) return;

    [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];    //we want to hear about accessories connecting and disconnecting
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(accessoryDidConnect:)
                                                 name:EAAccessoryDidConnectNotification
                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(accessoryDidDisconnect:)
                                                 name:EAAccessoryDidDisconnectNotification
                                               object:nil];
    ...
}
Run Code Online (Sandbox Code Playgroud)

在dealloc我有

- (void) dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidDisconnectNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:EAAccessoryDidConnectNotification object:nil];
    [[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications];    
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我将外部附件连接到iPad时,accessoryDidConnect:会触发一个accessoryDidDisconnect:随后是accessoryDidConnect:

我无法弄清楚为什么我会得到额外的连接和断开连接.有任何想法吗?

accessory nsnotificationcenter ipad ios

7
推荐指数
2
解决办法
4136
查看次数