GVKun编程网logo

何时在iPhone中发布NSString(ios什么时候发布)

2

在这篇文章中,我们将带领您了解何时在iPhone中发布NSString的全貌,包括ios什么时候发布的相关情况。同时,我们还将为您介绍有关iPad/iPhone–NSStringdrawInRect没

在这篇文章中,我们将带领您了解何时在iPhone中发布NSString的全貌,包括ios什么时候发布的相关情况。同时,我们还将为您介绍有关iPad / iPhone – NSString drawInRect没有自动换行、iphone – NSLocalizedString:为什么genstrings会为我的格式说明符添加1 $和2 $?、iphone – NSString initWithData返回null、iphone – NSString stringWithFormat问题的知识,以帮助您更好地理解这个主题。

本文目录一览:

何时在iPhone中发布NSString(ios什么时候发布)

何时在iPhone中发布NSString(ios什么时候发布)

我有以下方法

-(NSMutableArray *) getPaises {
     NSMutableArray * paises;
     paises = [[NSMutableArray alloc] init];
     while( get new row ) {
      Nsstring *aPais =  [Nsstring stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,0)];
      [paises addobject:aPais];
     }
     return paises;
    }

我不会发布aPais,因为如果我这样做,应用程序崩溃.我不知道在使用它之后是否应该释放它,如果是的话,我该怎么做呢?刚释放NSMutableArray就够了?还是要遍历它并释放每个对象?

如果我不需要释放它,谁负责释放?

解决方法

正如epatel所说,你不需要释放那个特定的字符串.如果你想要更积极主动,你可以这样做:

-(NSMutableArray *) getPaises {
    NSMutableArray * paises;
    paises = [[[NSMutableArray alloc] init] autorelease];
    while( get new row ) {
        Nsstring *aPais =  [[Nsstring alloc] initWithUTF8String:(char *)sqlite3_column_text(compiledStatement,0)];
        [paises addobject:aPais];
        [aPais release];
    }
    return paises;
}

综上所述:

> [[Nsstring alloc] initWith …] – >你必须释放或自动释放.
> [Nsstring stringWith …] – >无需释放.

– 编辑:添加了自动发送,当你返回它.当你返回一个对象时,如果你已经分配了& init’d,那么总是自动释放它.

iPad / iPhone – NSString drawInRect没有自动换行

iPad / iPhone – NSString drawInRect没有自动换行

我正在使用以下内容在UIView中呈现一些文本.

- (void) drawRect:(CGRect)rect
{

    Nsstring* text = @"asdf asdf asdf asdf asdf asdf asdf";

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context,[[UIColor clearColor] CGColor]);

    CGContextFillRect(context,rect);

    CGContextSetTextDrawingMode(context,kCGTextFillstrokeClip);

    CGContextSetFillColorWithColor(context,[[UIColor whiteColor] CGColor]);

    CGContextSetstrokeColorWithColor(context,[[UIColor blackColor] CGColor]);

    CGContextSetShouldSmoothFonts(context,YES);

    UIFont* font = [UIFont fontWithName:@"ArialRoundedMTBold" size:20.0f]; 

    CGSize textMaxSize = CGSizeMake(rect.size.width - 20.0f,rect.size.height);

    CGSize textSize = [text sizeWithFont:font constrainedToSize:textMaxSize lineBreakMode:UILineBreakModeWordWrap];

    CGRect textRect = CGRectMake(10.0f,10.0f,textSize.width,textSize.height);

    [text drawInRect:textRect withFont:font];

    [text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap]; 

    [text drawInRect:textRect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter];
}

[text drawInRect]没有像我期望的那样包装文本. TextSize是正确计算的,但绘制只是渲染一行.

更新:

解决了.

设置CGContextSetTextDrawingMode(context,kCGTextFillstrokeClip);无论选择何种UILineBreak模式,都会导致文本被剪辑.设置CGContextSetTextDrawingMode(context,kCGTextFillstroke);解决了这个问题.

解决方法

您可能没有textRect中的垂直大小.看看这个类似的问题:

How do I get -[NSString sizeWithFont:forWidth:lineBreakMode:] to work?

iphone – NSLocalizedString:为什么genstrings会为我的格式说明符添加1 $和2 $?

iphone – NSLocalizedString:为什么genstrings会为我的格式说明符添加1 $和2 $?

我正在使用genstrings Classes / * .m来本地化我的iPad / iPhone应用程序以生成Localizable.strings文件.大多数字符串工作正常,我得到预期的输出,但有一些字符串genstrings在我的格式说明符中间添加1 $或1 $,如下所示:

/* No comment provided by engineer. */
"%@%i" = "%1$@%2$i";

/* No comment provided by engineer. */
"%@: %i" = "%1$@: %2$i";

/* No comment provided by engineer. */
"%@" = "%@";

我没有与其他应用程序有这个问题,因为你可以看到它不一致.但它似乎并不是随机的,因为当我在同一个类文件上再次运行genstrings时,1 $等等总是在同一个地方.

我可以让它们进入并且字符串使用正确的格式,但我已经手动删除它们,因为我不确定$会做什么.不得不经历并手动更新字符串是令人讨厌的(加上我最终可能会错过一个).

我在想它可能是文本编码问题?或者我可以安全地将它们留在我的琴弦中然后忽略它们吗?

解决方法

这些数字指的是替换值的参数位置.例如,%2 $i表示“用第二个参数替换它,它应该是一个整数.”当本地化使用不同单词排列的语言时,这很有用,因为可以按不同于英语的顺序替换.

换句话说,它们可以安全地进入或移除,并且它们可以派上用场,以便将自然的翻译翻译成其他语言.

iphone – NSString initWithData返回null

iphone – NSString initWithData返回null

我通过NSURLConnection从网站提取数据,并将收到的数据放在NSMutableData的一个实例中。在connectionDidFinishLoading代理方法中,数据将转换为一个字符串,并调用Nsstring的适当方法:

Nsstring *result = [[Nsstring alloc] initWithData:data 
                                     encoding:NSUTF8StringEncoding]

结果字符串结果为空。然而,如果我使用NSASCIIStringEncoding,我确实获得了适当的字符串,尽管unicode字符按预期的方式乱码。服务器的Content-Type标头没有指定UTF-8编码,但是我已经尝试了一些类似场景的不同网站,并且字符串转换也是很好的。似乎问题只适用于给定的Web服务,但我不知道为什么。

在旁注中,是从API的良好做法中拉取网页和数据,即缓冲数据,转换成字符串,然后操作字符串?

非常感激!

解决方法

你说这是“绝对是UTF-8”,但没有内容类型标题,你不是真的知道。 (即使你确实有一个标题说,可能还是错的。)

我的猜测是,你的数据通常是ASCII,它总是正确地解析为UTF-8,但是你有时会试图解析实际上编码在ISO 8859-1或Windows codepage 1252中的数据。这样的数据一般都是ASCII,但是0-127范围外的一些字节定义了ASCII。 UTF-8将期望这样的字节在指定的范围序列内形成一系列代码单元,但是在其他编码中,任何字节,无论其值如何,都是一个完整的字符。尝试将非ASCII非UTF-8数据解释为UTF-8将几乎总是会导致错误的结果(错误的字符)或根本没有结果(无法解码;解码器返回nil),因为数据从未以UTF格式编码-8在第一位。

您应该首先尝试使用UTF-8,如果失败,请使用ISO 8859-1。如果您让用户检索任何网页,您应该让它们更改您用于解码数据的编码,以防发现实际上是8859-9或codepage-1252或其他8位编码。

如果您正在从特定服务器下载数据,特别是如果您对该服务器上运行的内容有影响,则应使其提供准确的Content-Type标头和/或修复导致其提供文本的错误那不是UTF-8。

iphone – NSString stringWithFormat问题

iphone – NSString stringWithFormat问题

我正在尝试使用Nsstring构建一个小表.我似乎无法正确格式化字符串.

这就是我所拥有的

[Nsstring stringWithFormat:@"%8@: %.6f",e,v]

其中e是来自其他地方的Nsstring,v是浮点数.

我想要的是输出这样的东西:

Grapes:       20.3
Pomegranates:  2.5
Oranges:      15.1

我得到的是

Grapes:20.3
Pomegranates:2.5
Oranges:15.1

如何修复格式以执行此类操作?

解决方法

NSDictionary* fruits = [NSDictionary dictionaryWithObjectsAndKeys:
                        [NSNumber numberWithFloat:20.3],@"Grapes",[NSNumber numberWithFloat:2.5],@"Pomegranates",[NSNumber numberWithFloat:15.1],@"Oranges",nil];
NSUInteger longestNameLength = 0;
for (Nsstring* key in [fruits allKeys])
{
    NSUInteger keyLength = [key length];
    if (keyLength > longestNameLength)
    {
        longestNameLength = keyLength;
    }
}
for (Nsstring* key in [fruits allKeys])
{
    NSUInteger keyLength = [key length];
    NSNumber* object = [fruits objectForKey:key];
    NSUInteger padding = longestNameLength - keyLength + 1;
    NSLog(@"%@",[Nsstring stringWithFormat:@"%@:%*s%5.2f",key,padding," ",[object floatValue]]);
}

输出:

Oranges:      15.10
Pomegranates:  2.50
Grapes:       20.30

今天关于何时在iPhone中发布NSStringios什么时候发布的讲解已经结束,谢谢您的阅读,如果想了解更多关于iPad / iPhone – NSString drawInRect没有自动换行、iphone – NSLocalizedString:为什么genstrings会为我的格式说明符添加1 $和2 $?、iphone – NSString initWithData返回null、iphone – NSString stringWithFormat问题的相关知识,请在本站搜索。

本文标签: