self.xxx 和 _xx 的区别

本文解释了在iOS开发中self.xx与_xx的区别。self.xx用于访问属性,触发setter和getter方法;而_xx直接访问实例变量。对于属性声明,iOS5之后编译器默认生成getter和setter方法。使用self.xx有助于利用懒加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发中实际应用到的 在赋值和取值的时候 不懂self.xx 和 _xx的区别,使用起来貌似差不多!不过有这样的出来还是有差别
self.xx 调用了该类的setter和getter方法;
_xx 直接获取自己的实例变量。

@property (nonatomic,copy) NSString *userName;
self.userName是对属性的访问, _userName是对局部变量的访问;

所有被声明为属性的成员,iOS5之前需要使用编译器指令@synthesize来告诉编译器帮助生成属性的getter,setter方法。之后这个指令可以不用人为指定了,默认情况下编译器会帮我们生成,编译器在生成getter,setter方法时是有优先级的,它首先查找当前类中的用户是否定义了属性的getter,setter方法,如果有,则编译器会跳过,不会再生成,使用用户定义的方法。。

当一个控制器需要添加多个视图的时候就很明显了。
需求:当点击某个按钮需要添加新的视图上来的时候,就使用self.xx 因为我这里用的懒加载!!

记得有文章说过,当取值的时候使用_xx 赋值的时候使用self.xx

Traceback (most recent call last): File "E:\python\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 64, in _binary_paths raise ValueError(f"The path is not a valid file: {path}") ValueError: The path is not a valid file: E:\pychrame\edge driver\msedgedriver.exe The above exception was the direct cause of the following exception: Traceback (most recent call last): File "E:\pycharm\PythonProject\测试浏览器指纹.py", line 86, in <module> driver = webdriver.Edge(service=service, options=edge_options) File "E:\python\Lib\site-packages\selenium\webdriver\edge\webdriver.py", line 47, in __init__ super().__init__( ~~~~~~~~~~~~~~~~^ browser_name=DesiredCapabilities.EDGE["browserName"], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...<3 lines>... keep_alive=keep_alive, ^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 53, in __init__ if finder.get_browser_path(): ~~~~~~~~~~~~~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 47, in get_browser_path return self._binary_paths()["browser_path"] ~~~~~~~~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\selenium\webdriver\common\driver_finder.py", line 78, in _binary_paths raise NoSuchDriverException(msg) from err selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
最新发布
06-07
### 解决Selenium中Edge浏览器驱动程序路径无效的问题 在使用 Selenium 时,如果遇到 `selenium.common.exceptions.NoSuchDriverException` 错误,通常是因为 WebDriver 的路径配置不正确或驱动版本与浏览器版本不匹配。以下是针对该问题的详细分析解决方案: #### 1. 确认 Edge 浏览器版本 确保本地安装的 Microsoft Edge 浏览器版本是最新的。可以通过以下方式检查: - 打开 Edge 浏览器。 - 转到 `edge://settings/help` 页面查看当前版本号。 例如,假设 Edge 浏览器版本为 `117.0.xxxx.xx`[^3]。 #### 2. 下载匹配的 EdgeDriver 根据 Edge 浏览器的版本,下载对应的 EdgeDriver。访问 [Microsoft Edge Driver 官方下载页面](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) 并选择与浏览器版本一致的驱动程序。 下载完成后,将解压后的 `msedgedriver.exe` 文件放置在系统 PATH 中,或者指定其完整路径。 #### 3. 配置 Selenium 使用 EdgeDriver 以下是使用 Selenium EdgeDriver 的正确代码示例: ```python from selenium import webdriver from selenium.webdriver.edge.service import Service # 指定 EdgeDriver 的路径 edge_driver_path = r'C:\path\to\msedgedriver.exe' # 替换为实际路径 # 创建 Edge 服务 service = Service(edge_driver_path) # 初始化 Edge 浏览器 driver = webdriver.Edge(service=service) driver.get('https://www.csdn.com/') ``` 如果 `msedgedriver.exe` 已添加到系统 PATH,则可以直接省略路径配置: ```python from selenium import webdriver driver = webdriver.Edge() driver.get('https://www.csdn.com/') ``` #### 4. 检查 Selenium 版本 确保使用的 Selenium 版本支持自动管理 WebDriver。从 Selenium 4 开始,内置了 Selenium Manager 功能,可以自动处理驱动程序的下载配置。如果仍出现 `NoSuchDriverException` 错误,可能需要手动指定驱动路径[^4]。 检查 Selenium 版本的方法如下: ```bash pip show selenium ``` 如果版本低于 4,请升级至最新版本: ```bash pip install --upgrade selenium ``` #### 5. 常见错误及解决方法 - **错误信息:** `Unable to obtain driver for MicrosoftEdge using Selenium Manager.` - **原因:** Selenium Manager 未能找到匹配的 EdgeDriver 或网络连接问题。 - **解决方法:** 手动下载并配置 EdgeDriver,如上文所述[^1]。 - **错误信息:** `ValueError: Missing 'msedgedriver.exe' in PATH and no executable found for edge version xxx.` - **原因:** 系统 PATH 中未包含 EdgeDriver,或驱动版本不匹配。 - **解决方法:** 将 `msedgedriver.exe` 添加到系统 PATH,或通过代码明确指定路径[^2]。 #### 6. 其他注意事项 - 如果 Edge 浏览器频繁更新导致驱动不兼容,可以考虑禁用自动更新,或定期检查并更新 EdgeDriver[^4]。 - 在某些情况下,可能需要卸载并重新安装 Edge 浏览器以恢复默认设置。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

建古

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值