我有一个带有自定义类的iPhone应用程序,我创建Detail的子类UIViewController.
我需要创建一个子类Detail,我想调用它ActivityDetail.所以我在ActivityDetail.h文件中写了以下内容:
#import <UIKit/UIKit.h>
#import "Detail.h"
@interface ActivityDetail : Detail {
}
@end
Run Code Online (Sandbox Code Playgroud)
问题是我收到编译器错误告诉我这个:
错误:无法找到'Detail'的接口声明,'ActivityDetail'的超类
奇怪的是:我可以将超类更改Detail为UIView(例如),编译得到很多错误(显然),然后Detail再次更改超类,一切正常!但是,如果我随后改变了Detail类,那么问题从一开始就会回来......
我怎么解决这个问题?
我正在使用以下函数将我的XML的每个"facility"节点放在NSMutable数组中:
-(void) grabXML {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:data options:0 error:nil] autorelease];
NSArray *nodes = [[doc rootElement] nodesForXPath:@"//facilities" error:nil];
for (CXMLNode *itemNode in nodes)
{
for (CXMLNode *eventNode in [itemNode children])
{
if ([[eventNode name] isEqualToString:@"facility"]) {
[content addObject:[eventNode copy]];
}
}
}
loading = FALSE;
[table reloadData];
[pool release];
}
Run Code Online (Sandbox Code Playgroud)
请注意,池是必需的,因为我在一个单独的线程中调用了grabXML方法.
使用仪器我可以看到以下行产生泄漏
[content addObject:[eventNode copy]];
Run Code Online (Sandbox Code Playgroud)
如果我改变它
[content addObject:eventNode];
Run Code Online (Sandbox Code Playgroud)
我以后无法访问XCMLNode(似乎是null).
我可以避免泄漏把它放在我的dealloc方法上:
for (CXMLNode *node in content) {
[node release];
}
Run Code Online (Sandbox Code Playgroud)
但我觉得我做错了......或者至少我不知道发生了什么......请你能给我一个线索吗?
谢谢!
当我做"构建和分析"时,xCode给出了以下警告:
在第70行分配的对象的潜在泄漏
方法返回一个具有+1保留计数的Objective-C对象(拥有引用)
循环回到循环的头部
在此点之后不再引用在第70行上分配的对象,并且保留计数为+1(对象泄漏)
这是代码(第70行是以"NSString*newString"开头的代码):
for(int j = 1; j < [smokeArray count]; j++) {
NSString *newString = [[NSString alloc] initWithFormat:@"Data: "];
int f = [[[smokeArray objectAtIndex:j] num] intValue];
for (int i = 0; i<6; i++) {
int d = [[[[smokeArray objectAtIndex:j] dat] objectAtIndex:i] intValue];
if (i>0) { newString = [newString stringByAppendingFormat:@"-%d",d]; }
else { newString = [newString stringByAppendingFormat:@"%d",d]; }
}
NSLog(@"%d, %@", f, newString);
}
Run Code Online (Sandbox Code Playgroud) 我正在按照这个简单的教程,我按照所有步骤...但浏览器根本没有显示我放在fields_for标签内的任何东西.
<%= form_for :activity, :url => activities_path do |f| %>
<% if @activity.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@activity.errors.count, "error") %> prohibited this activity from being saved:</h2>
<ul>
<% @activity.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label "Foto" %><br />
<%= f.text_field :photo %>
</div>
<div class="field">
<%= f.label "Foto per la home" %><br />
<%= f.text_field :photoHome %>
</div>
<% for info in @activity.infos %> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ROR Web应用程序与u rban飞艇API进行通信.
在我的控制器中,我有以下代码:
require 'net/http'
require 'net/https'
require 'open-uri'
app_key = 'JJqrCewBT7e_...'
app_secret = 'lAu7MIeARCiacg_...'
payload ={
"aps" => {"badge" => "0", "alert" => "My push message", "sound" => ""}
}.to_json
full_path = 'https://go.urbanairship.com/api/push/broadcast/'
url = URI.parse(full_path)
req = Net::HTTP::Post.new(url.path)
req.body = payload
req.basic_auth app_key, app_secret
con = Net::HTTP.new(url.host, url.port)
con.use_ssl = true
con.start {|http| http.request(req)}
Run Code Online (Sandbox Code Playgroud)
但是当我调用控制器的方法时,我的服务器崩溃,抛出这些错误(我知道,这看起来不愉快):
/Users/abramo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/http.rb:678: [BUG] Segmentation fault ruby
1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.6.0]
-- control frame ---------- c:0074 p:---- s:0409 b:0409 l:000408 d:000408 CFUNC …Run Code Online (Sandbox Code Playgroud) iphone ×4
cocoa-touch ×1
image ×1
ios ×1
json ×1
memory-leaks ×1
post ×1
subclassing ×1
uitableview ×1
xcode ×1