标签: nsstring

文字NSString是自动释放还是需要发布?

使用以下表示法创建字符串时:

NSString *foo = @"Bar";
Run Code Online (Sandbox Code Playgroud)

是否需要发布foo?或者foo在这种情况下自动释放?

cocoa-touch memory-management objective-c literals nsstring

19
推荐指数
3
解决办法
7508
查看次数

在NSArray中搜索字符串

我想通过我的NSArray搜索某个字符串.

例:

NSArray有对象:"狗","猫","胖狗","东西","另一件事","这里是另一回事"

我想搜索单词"another"并将结果放入一个数组,并将另一个非结果放入另一个可以进一步过滤的数组中.

search nsstring nsarray

19
推荐指数
2
解决办法
4万
查看次数

如何在NSTextView中查找文本?

我需要找到一个文本NSTextView,并将其保存到文件中.我可以保存罚款.我已经习惯了-stringValue,-textStorage到目前为止,但都没有用过.当我输入-stringValue时,它只是给了我(null),当我输入-textStorage时,它给了我很大一部分(就像一段长长的隐形文本).

如何将文本从一个文本中NSTextView删除NSString

cocoa objective-c nsstring nstextview

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

从filepath以编程方式获取文件名和扩展名cocoa?

我知道你可以使用NSBundle:

 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"rtf"];
Run Code Online (Sandbox Code Playgroud)

获取文件的文件路径,但是如何使用NSBundle以编程方式从文件路径获取文件名和扩展名(单独).

例如,我可能有:/Users/theuser/Documents/yourdocument.txt

很明显,文件是'yourdocument',扩展名'txt'

但是我需要从文件路径中获取文件名和扩展名以用作NSString.

非常感谢您的帮助!

cocoa filenames filepath nsstring nsbundle

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

IOS:NSString从字符串中检索子字符串

嘿我正在寻找一种从另一个字符串中提取字符串的方法.它可以是任何长度并且位于字符串的任何部分,因此通常的方法不起作用.

例如 http://bla.com/bla?id=%1234%&something=%888%

我要提取的是从id =%到下一个%.

有任何想法吗?

string iphone nsstring ios

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

在NSString的isa指针上使用"setValue:forKey:"然后调用[string class]时出错

Heres是我得到的错误.

libobjc.A.dylib`_objc_trap():
0x14c13f4:  pushl  %ebp
0x14c13f5:  movl   %esp, %ebp
0x14c13f7:  ud2    
Run Code Online (Sandbox Code Playgroud)

所以基本上我试图理解如何NSString工作并试图找到一种方法来改变指向"真(char*)字符串"的指针,这被称为常量.

所以,我发现有一个名为isa的指针指向(__NSCFConstantString *).它让我想到,如果我改变那个指针,那么我可以改变字符串.

我试过的代码是这样的:

NSString *st3 = [[NSString alloc] initWithString:@"hihi"];
[st3 setValue:@"change" forKey:@"isa"];
Run Code Online (Sandbox Code Playgroud)

并且,结果表明

之前:

在此输入图像描述

后:

在此输入图像描述

它似乎改变了,但它改变了每个NSString具有@"hihi"字符串的对象.

然后我做的是[st3 class]希望它会给出isa指针然后我在顶部发布了错误消息.

你能解释一下发生了什么以及为什么会这样吗?而且,有没有办法实习(我不太确定这个术语)就像在Java中一样?

请避免说只使用"NSMutableString"我只是想弄清楚是否可能有某种方法可以做到这一点.

objective-c objective-c-runtime nsstring

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

无论如何从变量名获取字符串?

说我上课了

@interface Person : NSObject { NSString *name; }
Run Code Online (Sandbox Code Playgroud)

我需要在课堂上获得NSString的名字

Person *person = [[Person alloc] init];
NSLog(@"Name of variable %s\n", _NameofVariable_(person->name));
Run Code Online (Sandbox Code Playgroud)

感谢您的回答,这是我从回复中提出的解决方案

//returns nil if property is not found
-(NSString *)propertyName:(id)property {  
    unsigned int numIvars = 0;
    NSString *key=nil;
    Ivar * ivars = class_copyIvarList([self class], &numIvars);
    for(int i = 0; i < numIvars; i++) {
        Ivar thisIvar = ivars[i];
        if ((object_getIvar(self, thisIvar) == property)) {
            key = [NSString stringWithUTF8String:ivar_getName(thisIvar)];
            break;
        }
    } 
    free(ivars);
    return key;
}  
Run Code Online (Sandbox Code Playgroud)

objective-c nsstring

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

UILabel的结果行与UILineBreakModeWordWrap

我有一个UILabel,其大小是用sizeWithFont:方法计算的.换行模式设置为UILineBreakModeWordWrap(计算大小时使用相同的标志sizeWithFont:)...

一切都很好,标签大小合适,并根据需要显示我的文字.

现在我需要知道用于显示标签的行(或sizeWithFont:使用时生成的行).我可以在技术上根据空格/插入符号返回来编写我自己的换行实现,但是它不会像Apple的实现那样得到保证,因此生成的行不会是用于计算文本大小的行,没关系重新发明轮子的事实.

理想情况下,我会传递我的字符串,指定宽度和换行符模式,并接收表示文本视觉行的字符串数组.

任何想法如何以最优雅的方式实现这一目标?

iphone cocoa-touch nsstring uilabel iphone-sdk-3.0

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

为什么Python中的程序比Objective-C更快?

我对Python 中这个用于循环遍历大词列表的算法的小例子感兴趣.我正在写一些"工具",这将允许我以与Python类似的方式切片Objective-C字符串或数组.

具体来说,这个优雅的解决方案引起了我的注意,非常快速地执行,它使用字符串切片作为算法的关键元素.尝试解决这个没有切片!

我使用下面的Moby单词列表复制了我的本地版本./usr/share/dict/words如果您不想下载Moby,可以使用.源只是一个类似于字典的大型独特单词列表.

#!/usr/bin/env python

count=0
words = set(line.strip() for line in   
           open("/Users/andrew/Downloads/Moby/mwords/354984si.ngl"))
for w in words:
    even, odd = w[::2], w[1::2]
    if even in words and odd in words:
        count+=1

print count      
Run Code Online (Sandbox Code Playgroud)

这个脚本将a)由Python解释; b)读取4.1 MB,354,983字的Moby字典文件; c)剥去线条; d)将线条放入一组,并且; e)并找到所有组合,其中平均值和给定单词的几率也是单词.这在MacBook Pro上执行约0.73秒.

我试图在Objective-C中重写相同的程序.我是这种语言的初学者,所以请放轻松,但请指出错误.

#import <Foundation/Foundation.h>

NSString *sliceString(NSString *inString, NSUInteger start, NSUInteger stop, 
        NSUInteger step){
    NSUInteger strLength = [inString length];

    if(stop > strLength) {
        stop = strLength;
    }

    if(start > strLength) { …
Run Code Online (Sandbox Code Playgroud)

python objective-c nsstring

18
推荐指数
1
解决办法
1279
查看次数

NSString boundingRectWithSize返回不必要的高度

当使用[NSString boundingRectWithSize:options:attributes]返回的rect的大小比我期望的某些字符串高.返回的高度似乎表示具有给定属性的字符串的最大可能高度,而不是字符串本身的高度.

假设相同的属性和选项,字符串" cars" 返回的高度与字符串" " 返回的高度相同ÉTAS-UNIS(注意E上的重音).

我本来希望boundingRectWithSize只考虑给定字符串中的字符,在我看来,它会为字符串" cars" 返回一个较短的高度.

在附带的截图中,我填写了返回的矩形,boundingRectWithSize并用红色概述了我认为边界矩形应该是什么.矩形的宽度与我预期的差不多,但高度比我预期的要高得多.这是为什么?

边界矩形示例

示例代码:

NSRect boundingRect = NSZeroRect;
NSSize constraintSize = NSMakeSize(CGFLOAT_MAX, 0);

NSString *lowercaseString = @"cars";
NSString *uppercaseString = @"ÉTAS-UNIS";
NSString *capitalizedString = @"Japan";

NSFont *drawingFont = [NSFont fontWithName:@"Georgia" size:24.0];
NSDictionary *attributes = @{NSFontAttributeName : drawingFont, NSForegroundColorAttributeName : [NSColor blackColor]};

boundingRect = [lowercaseString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Lowercase rect: %@", NSStringFromRect(boundingRect));

boundingRect = [uppercaseString boundingRectWithSize:constraintSize options:0 attributes:attributes];
NSLog(@"Uppercase rect: %@", NSStringFromRect(boundingRect));

boundingRect …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nsstring ios

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