小编Car*_*nde的帖子

自定义dealloc和ARC(Objective-C)

在我的小iPad应用程序中,我有一个使用观察者的"切换语言"功能.每个视图控制器在其期间向我的观察者注册viewDidLoad:.

- (void)viewDidLoad
{
    [super viewDidLoad];
    [observer registerObject:self];
}
Run Code Online (Sandbox Code Playgroud)

当用户点击"更改语言"按钮时,新语言将存储在我的模型中,并通知观察者并updateUi:在其注册对象上调用选择器.

这非常有效,除了我在TabBarController中有视图控制器.这是因为当标签栏加载时,它会从其子控制器中获取选项卡图标而不初始化视图,因此viewDidLoad:不会调用,因此这些视图控制器不会收到语言更改通知.因此,我将registerObject:调用移到了init方法中.

回来我viewDidLoad:以前和我的观察员一起注册时,我常常viewDidUnload:取消注册.由于我现在正在注册init,因此取消注册是很有意义的dealloc.

但这是我的问题.我写的时候:

- (void) dealloc
{
    [observer unregisterObject:self];
    [super dealloc];
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ARC禁止发送'dealloc'的显式消息

因为我需要打电话[super dealloc]来确保超级班级正常清理,但ARC禁止这样做,我现在卡住了.当我的物体死亡时,还有另一种获取信息的方法吗?

xcode objective-c dealloc ios automatic-ref-counting

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

为背景图像添加黑色叠加层

我已经看了几个关于这个的SO帖子:我想通过添加叠加来使当前背景图像变暗.

#header1 {
  background: url("http://lorempixel.com/image_output/cats-q-c-640-480-10.jpg");
  background-position:center center;
  position: relative;
  background-size: cover;
  padding-bottom:5em;
}
.overlay {
  background-color: rgba(0, 0, 0, 0.7);
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  position: relative;
  z-index: 1;
}
Run Code Online (Sandbox Code Playgroud)
<div class="header">
  <div class="overlay">
    <div class="jumbotron" id="header1">
      <h1>Hello</h1>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

也许我不明白如何使用z-index,或者我在这里遗漏了一些东西.用于着色的较暗背景未显示出来.有什么指针吗?

html css

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

Lua在iPhone上?

我想在iPhone上使用Lua.在Mac OS X上,在普通(非iOS)Cocoa应用程序中,我使用了以下代码:

lua_State* l;
l = lua_open();
luaL_openlibs(l);
luaL_loadstring(l, "print(\"Hi from Lua\");");
lua_pcall(l, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

我从lua.org/ftp下载了Lua 5.1.4并将其编译为Mac OS X.在Xcode项目中,我使用"添加现有框架"进行添加,liblua.a并使用"添加现有文件"添加include目录.

这按预期工作,并打印字符串:"来自Lua".当我在iOS项目中尝试相同的事情时,它会给出错误:

"_luaL_newstate", referenced from:
_main in main.o
more of the same thing...
symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

似乎.a文件没有链接到iPhone应用程序.有人知道如何使这项工作?

(顺便说一句,我真的不在乎苹果可能不接受我的应用程序,如果它有Lua.)

iphone macos lua cocoa-touch linker-errors

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

在iOS上创建网格视图

我需要使用动态变化的图像来实现网格视图.

大多数时候,我使用a UITableView创建一个网格,但如果我有大量的图像,我会遇到内存问题.

在iOS 6中,UICollectionView添加了,但我以前从未使用过它.

在制作网格视图时使用哪些"最佳实践"和视图子类,以便我没有内存问题?

ios

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

我应该多次运行Google Closure Compiler以更多地优化我的代码吗?

我尝试在高级优化模式下将以下JavaScript代码放入Closure Compiler Web界面:

function f(some_object) {
  if (some_object.foo == 1) {
    console.log(some_object.bar);
  } else {
    alert(some_object.bar);
  }
}

var my_object = {foo: 1, bar: 2};
f(my_object);
Run Code Online (Sandbox Code Playgroud)

它生成了以下编译代码:

var a = {b:1, a:2};
1 == a.b ? console.log(a.a) : alert(a.a);
Run Code Online (Sandbox Code Playgroud)

但是,当我将编译后的代码放回Closure Compiler时,它设法生成了更短的版本:

console.log(2);
Run Code Online (Sandbox Code Playgroud)

这是否意味着我应该在我的代码上多次运行Closure Compiler以确保我能够获得最佳的优化?这样做有什么潜在的问题吗?

javascript google-closure-compiler

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

将日期转换为Unix时间(自1970年以来的秒数)

我想将用户提供的日期转换为自1970年以来的秒值.

例如,如果我的应用程序提供了日期,5-MAY-2011 00:00:00 +0000那么我想要时间戳1304553600(该日期与1970年1月1日之间的秒数).

iphone nsdate nsdateformatter iphone-sdk-3.0 ios4

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

如何判断Svelte组件是否完全是静态内容?

我正在使用一个静态网站生成器,希望同时支持反应性JavaScript交互和标准的“将页面加载到浏览器中”超链接。在我看来,像斯维尔特这样的东西可能更适合这个;我可以使用服务器端渲染支持为所有页面生成HTML,然后可以编译和附带JavaScript组件hydratable: true以支持动态功能。

我想到的这种方法的一个问题是,我项目的大多数组件都是完全静态的内容:只有HTML和超链接,没有任何状态或事件处理程序,除非为新生成HTML文件,否则我不会更改道具。不同的页面。如果我天真地生成JavaScript以在页面加载时合并所有这些组件,那么我最终可能会得到比实际需要的包更大的包(以及在运行时完成的更多工作)。

Svelte是否提供任何方法来优化这种情况?我可以以某种方式检查某个组件是否纯粹是其道具的功能,以便在不需要时避免为其补水吗?还是编译器足够聪明才能为我做到这一点?

javascript svelte

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